Trong Folder của tôi chứa rất nhiều Folder con, nhưng tôi không biết có cách nào mà nó hiển thị toàn bộ dung lượng các Foder còn đó, xin nhờ các bạn giúp tôi đoạn code để thực hiện việc này.
Xin cảm ơn rất nhiều.
Dạ, đúng như thế thày ah.- Lấy List Folder kèm theo dung lượng của từng folder?
- Hiện Folder size trong cửa sổ Explorer?
Dạ, đúng như thế thày ah.
Hiện ở đâu cũng được, miễn sao biết được dung lượng của từng Folder con của 1 Folder bất kỳ cùng hiện ra một lúc (để khỏi phải ấn chuột phải vào từng cái mới xem được)
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
FileSystemObject là thứ "chuyên trị" file + folder... Không có gì là không làm được cả
Thưa thày Ndu, có cách nào mà chỉ lọc ra những Folder con cấp 1, ví dụ Forder E:\GIAI TRI nó chỉ lọc ra E:\GIAI TRI\2. Building (không lọc ra các cấp nhỏ hơn, ví dụ E:\GIAI TRI\2. Building\1. VAN BAN QUY PHAM PHAP LUAT\Van ban QPPL phuc vu lop Bat dong san bỏ qua không lọc do nó là Folder con cấp 3)
Rất mong thày có thể chỉ cho một số tính năng có thể làm được thông dụng của FileSystemObject.
Xin cảm ơn thày rất nhiều.
Public Dic As Object, [COLOR=#ff0000][B]lCount As Long[/B][/COLOR]
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
[COLOR=#ff0000][B]lCount = lCount + 1
If lCount >= 2 Then Exit Sub[/B][/COLOR]
If InSub Then
For Each SubFld In .SubFolders
FolderList SubFld.Path, True
Next SubFld
End If
End With
End With
End Sub
Ví dụ thế này:Tôi muốn tạo một loạt các Folder con nằm trong trong thư mục E:\3. Truong THCS Tan Lap chẳng hạn, tên các Folder con là các ô trong cột A.
Sau đó tôi muốn thêm chức năng kích chuột đến ô nào trong cột A thì nó sẽ tự mở Folder ấy.
Cả 2 công đoạn trên đều có thể thực hiện bằng Code được không? Xin chỉ giúp cách làm
Public Const fld = "E:\3. Truong THCS Tan Lap\"
Sub CreateFolder()
Dim Arr, Item, sPath As String
Arr = Range("A1:A5").Value
With CreateObject("Scripting.FileSystemObject")
If .FolderExists(fld) Then
For Each Item In Arr
sPath = fld & CStr(Item)
If Not .FolderExists(sPath) Then .CreateFolder sPath
Next
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sPath As String
On Error Resume Next
If Not Intersect(Range("A1:A5"), Target) Is Nothing Then
If Target.Count = 1 Then
sPath = fld & Target.Value
Shell "Explorer.exe /Select, " & """" & sPath & """", 1
End If
End If
End Sub
Xin thày Ndu cho em hỏi đối với loại bài toán này thì ta có thể ghi Macro được không?FileSystemObject là thứ "chuyên trị" file + folder... Không có gì là không làm được cả
Hổng ghi được đâu! Cái này buộc phải nhớ thôiXin thày Ndu cho em hỏi đối với loại bài toán này thì ta có thể ghi Macro được không?