VBAにて4万個のファイル一覧を書き出したい
ネットで見かけた以下コードで、サブフォルダも含めてファイル一覧を書き出したい。
フォルダに4万個のファイルがあるのですが、すぐにフリーズしてしまいます。
VBAでは大量データを扱うのは無理があるのでしょうか?
Sub TEST7()
Dim A
A = "C:\Users\User\Desktop\DATA"
i = 1
Call TEST8(A, i)
End Sub
Sub TEST8(A, i)
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
Dim B
'フォルダ内のファイルをループ
For Each B In FSO.GetFolder(A).Files
i = i + 1
.Cells(i, 1) = A 'フォルダパス
.Cells(i, 2) = B 'ファイルパス
.Cells(i, 3) = FSO.GetFileName(B) 'ファイル名
.Cells(i, 4) = FSO.GetExtensionName(B) '拡張子
.Cells(i, 5) = FSO.GetFile(B).Size 'サイズ
.Cells(i, 6) = FSO.GetFile(B).DateCreated '作成日時
.Cells(i, 7) = FSO.GetFile(B).DateLastModified '更新日時
.Cells(i, 8) = FSO.GetFile(B).DateLastAccessed 'アクセス日時
Next
Dim C
'フォルダ内のサブフォルダをループ
For Each C In FSO.GetFolder(A).SubFolders
i = i + 1
.Cells(i, 1) = C. 'フォルダパス
.Cells(i, 5) = FSO.GetFolder(C).Size 'サイズ
.Cells(i, 6) = FSO.GetFolder(C).DateCreated '作成日時
.Cells(i, 7) = FSO.GetFolder(C).DateLastModified '更新日時
.Cells(i, 8) = FSO.GetFolder(C).DateLastAccessed 'アクセス日時
'再帰する
Call TEST8(C, i)
Next
End With
End Sub
お礼
ご回答ありがとうございました。 やはりそれしか方法は無いですか。 そうだろうなと分かっていつつも、もしかしたら、そのものずばりのルーチンがどこぞに眠っているのかもしれないと思い、質問させていただきました。 あまり需要がないのでしょうか?