Em có 1 folder chứa rất nhiều file. Em muốn lập 1 file excel để lấy tất cả tên các file này. Các bác xem ví dụ trong file đính kèm. Bác nào biết giúp em với nhé! Cám ơn các bác!
Code này tôi viết đã lâu (từ năm 2009), khi ấy chỉ mới tập tành VBA thôi nên có sơ suất 1 chút. Đã dùng Scripting.FileSystemObject mà lại đi xài hàm FileLen nên vẫn bị lỗi với tiếng Việt ---> Đúng ra vẫn có thể dùng Scripting.FileSystemObject để lấy file size
Tôi đã sửa lại code trên như sau:
PHP:
Public Dic As Object
Private Sub ListFilesInFolder(fldName As String, InSub As Boolean)
Dim fleItem As Object, fldItem, fleName As String, fleSize As Double
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
With .GetFolder(fldName)
For Each fleItem In .Files
fleName = fleItem.Path
fleSize = fleItem.Size
Dic.Add fleName, fleSize
Next
If InSub Then
For Each fldItem In .SubFolders
ListFilesInFolder fldItem.Path, True
Next
End If
End With
End With
End Sub
PHP:
Sub GetFileList()
Dim tmpArr1, tmpArr2, Arr(), fldName As String, lCount As Long, n As Long
Range("A2:B60000").Clear
Set Dic = CreateObject("Scripting.Dictionary")
On Error Resume Next
With Application.FileDialog(4)
.Show: .AllowMultiSelect = False
fldName = .SelectedItems(1)
If Len(fldName) Then ListFilesInFolder .SelectedItems(1), True
End With
On Error GoTo 0
lCount = Dic.Count
If lCount Then
tmpArr1 = Dic.Keys
tmpArr2 = Dic.Items
ReDim Arr(1 To lCount, 1 To 2)
For n = 1 To lCount
Arr(n, 1) = tmpArr1(n - 1)
Arr(n, 2) = tmpArr2(n - 1)
Next
With Range("A2").Resize(lCount, 2)
.Value = Arr
.Offset(, 1).Resize(, 1).NumberFormat = "#,##0 ""KB"""
End With
Columns("A:B").AutoFit
End If
End Sub
Tuy nhiên nếu code này chạy trên Windows 7 thì vẫn còn 1 rắc rối với UAC ---> Windows sẽ không cho phép bất kỳ truy cập trái phép nào đối với folder hệ thống... khi ấy ta còn phải làm thêm rất nhiều công đoạn nữa mới mong code chạy ngon lành
-----------------------------------
Nếu có thời gian, bạn vui lòng góp ý cho tôi thêm về vấn đề này nhé
Cảm ơn
Thanks NDU, Code bạn viết rất hữu ích
Mình có 1 yêu cầu nhỏ. Trong trường hợp mình ko muốn hiện trỏ browse đến thư mục, mà lấy chính thư mục gốc, chứa file .xls chạy code
Thêm nữa là chỉ list ra những file có đuôi là .BMP thì sao ạh?