Chắc bạn dùng FileSearch để lấy list file trong thư mục rồi, đúng không? Cái này không áp dụng được trong Excel 2007 nên báo lỗi là chuyện thường
Vậy:
- Hoặc là bạn viết lại code khác (trên diễn đàn có đầy)
- Hoặc là đưa file của bạn lên để mọi người sửa giúp
Cám ơn bác đã chỉ dẫn.
1. Bác có thể chỉ giùm em phần code khác trong diễn đàn đuợc không?
2. Đây là phần code ver cũ chạy bình thuờng trong ễcl 2003 bác ạ.
Function CreateFileList(FileFilter As String, IncludeSubFolder As Boolean) As Variant
' tra ve ten t?p tin day du cho cac files thoa dieu kien trong thu muc hien hanh'
Dim FileList() As String, FileCount As Long
CreateFileList =
Erase FileList
If FileFilter = "" Then FileFilter = "*.*" ' tat ca cac tap tin
With Application.FileSearch
.NewSearch: .LookIn = CurDir
.Filename = FileFilter
.SearchSubFolders = IncludeSubFolder
.FileType = msoFileTypeAllFiles
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) = 0 Then Exit Function
ReDim FileList(.FoundFiles.Count)
For FileCount = 1 To .FoundFiles.Count
FileList(FileCount) = .FoundFiles(FileCount)
'size_file(filecount)=.
Next FileCount
.FileType = msoFileTypeExcelWorkbooks
End With
CreateFileList = FileList
Erase FileList
End Function
Sub TestCreateFileList()
Dim k As Long
Dim FileNamesList As Variant, i As Integer
'---------------------
ChDir "D:\Documents\My Documents "
'----------------------
FileNamesList = CreateFileList("*.*", False) 'Thuc hien tim kiem File bao gom cac thu muc con
' Dua ra ket qua
'Range("A:A").ClearContents
ActiveSheet.Cells(2, 1).Value = "Test1.xls"
k = 1
For i = 1 To UBound(FileNamesList)
If InStr(1, FileNamesList(i), "_files\", 0) Then
Else
ActiveSheet.Cells(4 + k, 2).Value = FileNameOnly(FileNamesList(i))
ActiveSheet.Cells(4 + k, 1).Value = Replace(FileNamesList(i), FileNameOnly(FileNamesList(i)), "", 1)
ActiveSheet.Cells(4 + k, 4).Value = Str(Round(Val(FileLen(FileNamesList(i))) / 1024, 0))
k = k + 1
End If
Next i
End Sub