Option
Explicit
Private
Const
C_PATH
As
String
=
"C:\Users\User\Desktop\test"
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
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:
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
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