[VBA]递归实例——遍历文件夹

在下面的示例中,我通过递归调用一个过程来遍历一个文件夹下的文件,包括其子文件夹,孙文件夹,子子孙孙无穷尽,只要内存不崩溃。

Dim n As Long  '首先定义一个公共变量
Sub bianli(myPath As String)  '该函数需传入一个自定义文件夹路径
    Dim fso As Object, fds As Object
    Set fso = CreateObject("scripting.FileSystemObject")
    Set fds = fso.getFolder(myPath)
    
    '对于本文件夹下的文件,依次把文件路径名打印到激活工作表单元格
    For Each file In fds.Files
        n = n + 1
        Cells(n, 1).Value = file.Path
       
    Next
    
    '对于本文件夹下的子文件夹,递归调用本过程
    For Each folder In fds.subfolders
       
        Call bianli(folder.Path)
    Next
End Sub

以上是过程定义,接下来直接调用即可

Sub test()
    bianli "D:\Hello文件夹"
End Sub