Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortierung beim Auslesen eines Ordners

Sortierung beim Auslesen eines Ordners
24.06.2020 11:20:36
Erik
Liebe Gemeinde,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierung beim Auslesen eines Ordners
24.06.2020 11:28:48
Martin
Hallo Erik,
die Sortierreihenfolge im Explorer ist nach vielen verschiedenen Attributen möglich (Dateiname, Dateigröße, Speicherdatum, usw.). Genau dieses Attribut müsste per VBA ebenfalls ausgelesen werden, um die ausgelesenen Dateien danach zu sortieren.
Viele Grüße
Martin
AW: Sortierung beim Auslesen eines Ordners
24.06.2020 12:18:30
Erik
Hallo Martin,
vielen Dank für deine Rückmeldung. Ich habe mich wahrscheinlich nicht ganz gut ausgedrückt: Ich wollte gern wissen, nach welchem Prinzip die Prozedur die Dateien überhaupt einliest. Also die Listung in objFolder.Files sozusagen. Weißt du das zufällig?
LG Erik
AW: Mehr oder weniger Zufall (owT)
24.06.2020 12:57:44
EtoPHG

AW: Mehr oder weniger Zufall (owT)
24.06.2020 15:51:48
Erik
Hallo EtoPHG,
ok, meine Vermutung wäre jetzt noch die Sortierung nach der Inode gewesen, aber das gibts auf Windows-BS ja nicht. Danke für die Antwort!.
LG Erik
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige