Viết code lấy tên tất cả các file trong 1 folder.

Liên hệ QC

hoangminhtien

Thành viên gắn bó
Tham gia
29/2/08
Bài viết
1,685
Được thích
2,226
Nghề nghiệp
Mechanical Engineering
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!
 

File đính kèm

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?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom