遍历目录下所有文件夹及文件

如何用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

(0)

相关推荐