2016-10-07 2 views
0

Ich verwende "For Each" -Anweisung, um alle Dateien in einem Ordner zu durchsuchen, ihre Namen und einige Inhalte zu extrahieren und sie in einigen Tabellen zu platzieren. Das einzige Problem, mit dem ich konfrontiert bin, ist, dass die Dateien in einer zufälligen Reihenfolge verarbeitet werden.Seltsame Dateiindizes bei der Verwendung von "For Each"

Die Dateien in den Ordner haben die Namen (die der Zeit entspricht, haben sie in den Ordner hinzugefügt wurde): 203909_20160910_1149.csv 203909_20160910_1739.csv 203909_20160911_1259.csv

Aber „For Each“ Befehl Prozesse sie in einer seltsamen Reihenfolge: erst 203909_20160910_1739.csv dann 203909_20160911_1259.csv letzt 203909_20160910_1149.csv

All Tutorials, die ich bisher gesehen habe sagen, dass „For Each“ wird immer mit fester Reihenfolge von Dateien (“ zuerst zu dauern "), und ich kann es nicht ändern. Also versuche ich herauszufinden, wie die Dateien indiziert sind, wenn nicht nach Namen und nicht nach Datum? Gibt es irgendwelche Attribute, die ich festlegen könnte, um die A-> Z-Sequenz zu erzwingen?

+0

Sind Sie mit dem 'Scripting.FileSystemObject' oder eine andere Methode? – Comintern

+0

@Comintern: Ja, ich benutze Scripting.FileSystemObject –

Antwort

0

können Sie den Code verwenden, unten, Kredit @ Frédéric Hamidi Von Frage:

Does Dir() make any guarantee on the order of files returned?

Dim allFiles As Variant 
allFiles = GetFileList(MyDir & "wp*.xls") 
If IsArray(allFiles) Then 
    Call QuickSort(allFiles, LBound(allFiles), UBound(allFiles)) 
End If 

Dim x As Integer 
Dim lstFile As String 
x = 1 

' still need to loop through results to get lastFile 
While lstFile <> LastFileName 
    lstFile = allFiles(x) 
    x = x + 1 
Wend 

For i = x To UBound(allFiles) 
    MyFileName = allFiles(i) 
    Cells(LastRow + 1, 1) = MyFileName 
    LastRow = LastRow + 1 
Next i 
+0

@Downvoter zu erklären? – User632716

+0

danke für deine antwort. Ich hatte gehofft, dass es eine Art von Logik in der Art und Weise gibt, wie Dateien sortiert werden. Aber soweit ich jetzt sehe, kann ich ForEach nicht benutzen :( –

Verwandte Themen