Nếu việc tìm thư mục cháu, chắt phức tạp quá xin giúp em Count số thư mục con là đẹp rồi.
Thanks các bác nhé.
Public Dic As Object
Private Sub FolderList(FolderName As String, InSub As Boolean)
Dim SubFld As Object
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(FolderName)
Dic.Add .Path, .Size / 1024
If InSub Then
For Each SubFld In .SubFolders
FolderList SubFld.Path, True
Next SubFld
End If
End With
End With
End Sub
Sub Main()
Dim Arr, i As Long, Item
Application.ScreenUpdating = False
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
Range("A2:B10000").ClearContents
With CreateObject("Shell.Application")
FolderList .BrowseForFolder(0, "", 1).Self.Path, True
End With
Arr = Dic.Keys
ReDim Arr(Dic.Count - 1, 1)
For Each Item In Dic.Keys
Arr(i, 0) = CStr(Item)
Arr(i, 1) = Dic.Item(Item)
i = i + 1
Next
With Range("A2").Resize(i, 2)
.Offset(, 1).Resize(, 1).NumberFormat = "#,##0 ""KB"""
.Value = Arr
End With
Application.ScreenUpdating = True
End Sub
Public lCount As Long
Private Sub FolderList(FolderName As String, InSub As Boolean)
Dim SubFld As Object
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(FolderName)
lCount = lCount + .SubFolders.Count
If InSub Then
For Each SubFld In .SubFolders
FolderList SubFld.Path, True
Next SubFld
End If
End With
End With
End Sub
Sub Main()
lCount = 0
With CreateObject("Shell.Application")
FolderList .BrowseForFolder(0, "", 1).Self.Path, True
End With
MsgBox lCount
End Sub