Thema Datum  Von Nutzer Rating
Antwort
07.05.2018 13:42:10 Nikolai
*****
NotSolved
Blau Trennzeichen(Delimiter) identifizieren in csv datei mit vba
07.05.2018 19:06:07 SJ
NotSolved

Ansicht des Beitrags:
Von:
SJ
Datum:
07.05.2018 19:06:07
Views:
472
Rating: Antwort:
  Ja
Thema:
Trennzeichen(Delimiter) identifizieren in csv datei mit vba

Hallo,

versuche es einmal hiermit:

Option Explicit

'//Verweise
'//Microsoft Scripting Runtime

'//Einstellungen
Private Const C_PATH As String = "C:\Users\User\Desktop\test"

'//main Subroutine
Public Sub main()
    Dim fso As FileSystemObject
    Dim fold As Folder
    Dim f As File
    Dim stream As TextStream
    
    On Error GoTo cleanUp
    Set fso = New FileSystemObject
    Set fold = fso.GetFolder(C_PATH)
    
    For Each f In fold.Files
        'Debug.Print f.Type
        If f.Type = "Microsoft Excel-CSV-Datei" Then
            Set stream = fso.OpenTextFile(f.Path, ForReading, False)
            If Not stream.AtEndOfStream Then
                Debug.Print "Delimiter in Datei '" & f.Path & "': " & "[" & getDelimiter(stream.ReadLine) & "]"
            End If
            stream.Close
            Set stream = Nothing
        End If
    Next f
    On Error GoTo 0
    
cleanUp:
    '//Fehlerbehandlung
    If Err.Number Then
        Dim sPromt As String
        sPromt = "Es ist leider ein Fehler aufgetreten." & vbCrLf & _
            "Fehlernummer: " & Err.Number & vbCrLf & _
            "Fehlerbeschreibung: " & Err.Description
        MsgBox sPromt, vbCritical, "Fehler " & Err.Number
    End If
    
    '//Referenzen freigeben
    If Not stream Is Nothing Then Set stream = Nothing
    If Not f Is Nothing Then Set f = Nothing
    If Not fold Is Nothing Then Set fold = Nothing
    If Not fso Is Nothing Then Set fso = Nothing
End Sub

Private Function getDelimiter(ByRef line As String) As String
    Dim sDelimiter(3) As String
    Dim v As Variant, w As Variant
    
    sDelimiter(0) = ";"
    sDelimiter(1) = vbTab
    sDelimiter(2) = ","
    
    On Error Resume Next
    For Each v In sDelimiter
        w = Split(line, v)
        If IsArray(w) And UBound(w) > 0 Then
            getDelimiter = v
            Exit Function
        End If
        Set w = Nothing
    Next v
    On Error GoTo 0
    
    getDelimiter = vbNullString
End Function

Ausgabe im Direktfenster:

Delimiter in Datei 'C:\Users\Sebastian\Desktop\test\daten_comma.csv': [,]
Delimiter in Datei 'C:\Users\Sebastian\Desktop\test\daten_semicolon.csv': [;]
Delimiter in Datei 'C:\Users\Sebastian\Desktop\test\daten_tab.csv': [   ]

Viele Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.05.2018 13:42:10 Nikolai
*****
NotSolved
Blau Trennzeichen(Delimiter) identifizieren in csv datei mit vba
07.05.2018 19:06:07 SJ
NotSolved