Public Function FindAllFiles(sFolder As Folder)
Dim f As File
Dim oFld As Folder
For Each f In sFolder.Files '遍历目录下所有文件
If index >= 1 Then '跳过开头没有值的下标
Worksheets(1).Range("B" & index).Value = f.Path '将文件路径及文件名填充到表的B列
End If
index = index + 1
Next
For Each oFld In sFolder.SubFolders '遍历子文件夹
FindAllFiles oFld '嵌套调用自身
Next
End Function
Sub 遍历选定目录()
Dim fso As New FileSystemObject
Dim sFolder As Folder, sPath As String
Dim dig As Object
Dim index As Long
Set dig = Application.FileDialog(msoFileDialogFolderPicker)
If dig.Show = -1 Then sPath = dig.SelectedItems(1) '弹出目录选择窗口
Worksheets(1).Range("A:A").ClearContents '清空A列
Worksheets(1).Range("A1").Value = sPath '打印文件夹名
If fso.FolderExists(sPath) Then '判断文件是否存在
Set sFolder = fso.GetFolder(sPath)
index = 1 '初始化
Worksheets(1).Range("B:B").ClearContents
FindAllFiles sFolder '调用函数
Range("B1").Select
Else
Debug.Print (Now & " 未选择正确的目录!") '控制台打印日志
End If
End Sub