遍歷目錄下所有文件夾及文件

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章