|
本帖最后由 ning84 于 2024-4-8 21:13 编辑
现在采用的方法SubFolders-----------Count
遍历子目录。需要人为定义几级子目录。
- Sub TraverseFolderToSheet()
- Dim Fso As New FileSystemObject
- Dim oFolder As Folder
- Dim Arr, Arr1, Arr2
- Set Fso = New FileSystemObject
-
- Arr = TraverseFolderArr(Fso.GetFolder(ThisWorkbook.Path))
- For ii = 0 To UBound(Arr)
- Set oFolder = Arr(ii)
- Debug.Print oFolder.Name
- Next ii
- Stop
-
- End Sub
- Function TraverseFolderArr(mFolder As Folder)
- Dim oFolder As Folder, oFolders As Folders
- Set oFolders = mFolder.SubFolders
- Dim Arr() As Folder
- ReDim Arr(oFolders.Count - 1) As Folder
- Dim ii As Integer
- For Each oFolder In oFolders
- Set Arr(ii) = oFolder
- ii = ii + 1
- Next oFolder
- TraverseFolderArr = Arr
- End Function
- Function TraverseFolderDict(mFolder As Folder, Dict As Dictionary)
- Dim oFolder As Folder, oFolders As Folders
- Set oFolders = mFolder.SubFolders
-
- For Each oFolder In oFolders
-
- Dict(oFolder.Path) = ""
- Set Dict = TraverseFolderDict(oFolder, Dict)
- Next oFolder
- Set TraverseFolderDict = Dict
- 'Stop
-
- End Function
- Sub DictTraverseFolder()
- Dim Sht As Worksheet
- Set Sht = Sheet1
- With Sht.Cells
- .Clear
- .Font.Size = 9
- End With
- Dim Fso As New FileSystemObject
- Dim oFolder As Folder
- Dim Arr, Arr1, Arr2
- Dim Dict As Dictionary
- Dim Rr As Integer
- Rr = 10
-
- Set Dict = New Dictionary
- Set Fso = New FileSystemObject
-
- Set Dict = TraverseFolderDict(Fso.GetFolder(ThisWorkbook.Path), Dict)
- ''
- For ii = 0 To Dict.Count - 1
- Debug.Print ii, Dict.Keys(ii)
- With Sht
- .Cells(Rr + ii, 1) = ii
- .Cells(Rr + ii, 2) = Dict.Keys(ii)
- Set oFolder = Fso.GetFolder(.Cells(Rr + ii, 2))
- .Cells(Rr, 3) = oFolder.SubFolders.Count
- End With
-
- Next ii
-
- End Sub
复制代码
|
|