2016-10-07 19 views
0

"For Each"ステートメントを使用してフォルダ内のすべてのファイルをブラウズし、名前といくつかのコンテンツを抽出していくつかのテーブルに配置します。私が直面している唯一の問題は、ファイルがランダムな順序で処理されることです。"For Each"を使用するときの奇妙なファイルインデックス

フォルダ内のファイルは、(彼らはフォルダに追加された時間に相当)の名前があります:コマンド処理「の各については」 203909_20160910_1149.csv 203909_20160910_1739.csv 203909_20160911_1259.csv

しかしを奇妙な順序でそれら:私はこれまで見てきた 最初203909_20160910_1739.csv その後、203909_20160911_1259.csv 最後203909_20160910_1149.csv

すべてのチュートリアルは、「各について」常に「ファイルの固定シーケンスを(使用していることを言っています最初 最後に ")、私はそれを変更する方法はありません。だから私は名前ではなく、日付ではなく、ファイルのインデックスを作成する方法を把握しようとしていますか? A→Zシーケンスを強制するために設定できる属性はありますか?

+0

あなたは 'Scripting.FileSystemObject'またはいくつかの他の方法を使用していますか? – Comintern

+0

@Comintern:はい、私はScripting.FileSystemObjectを使用しています –

答えて

0

あなたは質問からフレデリック・ハミディ@に以下のコード、クレジットを使用することができます。

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は説明してくれませんか? – User632716

+0

あなたの答えに感謝します。私は、ファイルのソート方法にある種の論理があることを期待していました。しかし、私が今見ている限り、私はForEachを使用することはできません:( –

関連する問題