遍历目录下所有文件夹及文件
如何用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