如何用VBA遍歷指定文件夾內的所有文件?
如果僅僅是指定文件夾下的文件而不包括子文件夾內文件的話,那好辦。一個Do...While加上Dir就可以搞定。要包括子文件夾,那就要費一番小功夫了。
網上沒有找到用Dir的完美答案,所以參考網上的思路,根據自己的理解編了一個,以備後用。主要還是利用兩個字典對象及遞歸的思想。
------------------------------------------------
Sub test()
Dim startfolder As String
startfolder =
"D:\starcraft\" '指定文件夾
Set folderlist = CreateObject("scripting.dictionary")
Set filelist = CreateObject("scripting.dictionary")
i = 1
folderlist.Add startfolder, ""
Do While folderlist.Count > 0
For
Each FolderName In folderlist.keys
fname
= Dir(FolderName, vbDirectory)
Do
While fname <> ""
If
fname <> ".." And fname <> "." Then
If
GetAttr(FolderName & fname) And vbDirectory Then
folderlist.Add
FolderName & fname & "\", ""
Else
filelist.Add
FolderName & fname,
"" '這裏列出的該文件的路徑+文件名
End
If
End
If
fname
= Dir
Loop
folderlist.Remove
(FolderName)
Next
Loop
For Each arr In
filelist.keys '將文件路徑+文件名放在當前工作表的A列
Range("A"
& i).Value = arr
i
= i + 1
Next
End Sub