ich versuche mit folgender Funktion einen Ordner auszulesen, was sehr gut klappt. Allerdings habe ich festgestellt, dass die Funktion die Dateien in einer anderen Reihenfolge einliest, als Sie mir bspw. im Explorer angezeigt wird.
Weiß jemand woran das liegt bzw. wie man das in Einklang bringen kann (Sortierung im Explorer wird beim Einlesen übernommen z.Bsp.)?
Public Function Ordner_auslesen( _
ByRef Dateien As Collection, _
ByVal Ordnerpfad As String, _
Optional ByVal Dateifilter As String = "*", _
Optional ByVal Unterordner_auslesen As Boolean = False _
) As Collection
'Quelle: http://www.ms- _
office-forum.net/forum/showthread.php?t=267029
'# PARAMETERINFO:
'# Files: Datenfeld zur Ausgabe der Suchergebnisse
'# Ordnerpfad: String der das zu durchsuchende Verzeichnis angibt
'# Dateifilter: String der den gesuchten Dateityp oder Dateinamen enthält (Optional, _
Standard="*.*" findet alle Dateien)
'# Beispiele: "*.txt" - Findet alle Textdateien
'# "*name*" - Findet alle Dateien mit "name" im Dateinamen
'# "*.avi;*.mpg" - Findet .avi und .mpg Dateien (Dateitypen mit ; trennen)
'# Unterordner_auslesen: Boolean gibt an, ob Unterordner durchsucht werden sollen ( _
Optional, Standard=False)
Dim objFilesystem As Object
Dim objFolder As Object
Dim objSubfolder As Object
Dim objFile As Object
Dim n As Long
Dim varFiles As Variant
Dim Datei As New Collection
Set objFilesystem = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFilesystem.GetFolder(Ordnerpfad)
'Filter als Array gestalten
If InStr(1, Dateifilter, ";") > 0 Then
varFiles = Split(Dateifilter, ";")
Else
ReDim varFiles(0)
varFiles(0) = Dateifilter
End If
For Each objFile In objFolder.Files
If Not objFile Is Nothing Then
For n = 0 To UBound(varFiles)
If LCase(objFilesystem.GetFilename(objFile)) Like LCase(varFiles(n)) Then
With Datei
.Add objFile.Name, "Dateiname"
.Add objFile.ParentFolder.Path & "\", "Ordnerpfad"
End With
Dateien.Add Datei
Set Datei = Nothing
Exit For
End If
Next n
End If
Next
If Unterordner_auslesen = True Then
For Each objSubfolder In objFolder.Unterordner_auslesen
Ordner_auslesen Dateien, objSubfolder, Dateifilter, Unterordner_auslesen
Next objSubfolder
End If
Set Ordner_auslesen = Dateien
End Function
Besten Dank für jeden Tipp!Liebe Grüße aus dem Elbflorenz
Erik