VBA 递归枚举文件夹和文件
例子
早期绑定(参考MicrosoftScriptingRuntime)
Sub EnumerateFilesAndFolders( _
FolderPath As String, _
Optional MaxDepth As Long = -1, _
Optional CurrentDepth As Long = 0, _
Optional Indentation As Long = 2)
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
'Check the folder exists
If FSO.FolderExists(FolderPath) Then
Dim fldr As Scripting.Folder
Set fldr = FSO.GetFolder(FolderPath)
'Output the starting directory path
If CurrentDepth = 0 Then
Debug.Printfldr.Path
End If
'Enumerate the subfolders
Dim subFldr As Scripting.Folder
For Each subFldr In fldr.SubFolders
Debug.PrintSpace$((CurrentDepth + 1) * Indentation) & subFldr.Name
If CurrentDepth < MaxDepth Or MaxDepth = -1 Then
'Recursively call EnumerateFilesAndFolders
EnumerateFilesAndFolders subFldr.Path, MaxDepth, CurrentDepth + 1, Indentation
End If
Next subFldr
'Enumerate the files
Dim fil As Scripting.File
For Each fil In fldr.Files
Debug.PrintSpace$((CurrentDepth + 1) * Indentation) & fil.Name
Next fil
End If
End Sub使用以下参数调用时的输出:EnumerateFilesAndFolders"C:\Test"
C:\Test
Documents
Personal
Budget.xls
Recipes.doc
Work
Planning.doc
Downloads
FooBar.exe
ReadMe.txt使用以下参数调用时的输出:EnumerateFilesAndFolders"C:\Test",0
C:\Test Documents Downloads ReadMe.txt
使用以下参数调用时的输出:EnumerateFilesAndFolders"C:\Test",1,4
C:\Test
Documents
Personal
Work
Downloads
FooBar.exe
ReadMe.txt
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下