Giúp đỡ: Tại sao đoạn code về "Tìm file" này không chạy ở excel 2007?

  • Thread starter Thread starter nplvn
  • Ngày gửi Ngày gửi
Liên hệ QC

nplvn

Thành viên mới
Tham gia
9/5/08
Bài viết
32
Được thích
24
Đoạn code này ở excell 2003 chạy bình thường nhưng sao qua 2007 không chạy được. Đoạn code này tôi tìm kiếm ở trên diễn đàn GPE của tác giả nào đó mà không nhớ tên (thành thật xin lỗi). Vì kiến thức về VBA kém nên thường xem, tìm kiếm các đoạn code nào thích hợp rồi ứng dụng và không có đóng góp ý kiến. Mong anh chị chỉ giúp. Thanks!
PHP:
 Public Function FileDongia_Search()
 Dim CreateFileList, FileCount As Long
 Dim FileFilter As String,  FileList() As String
 Dim IncludeSubFolder As Boolean
 Dim FileDongia As String, sItemlist As String, Txtduongdan As String

 Txtduongdan = ThisWorkbook.Path & "\dlDongia"
 'CreateFileList = ""  '
 Erase FileList
 frmDongia.lstDongia.Clear
 'Workbooks("dtExcel.xls").Sheets("dtExcel").Rows("4:100").ClearContents'
 If FileFilter = "" Then FileFilter = "*.xls*"
    With Application.FileSearch   '<=| RED COLOR  <=|'
        .NewSearch
        .LookIn = Txtduongdan
        .Filename = FileFilter
        .SearchSubFolders = IncludeSubFolder
        .FileType = msoFileTypeAllFiles
        If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) = 0 Then
            MsgBox "There were no files found."
            Exit Function
        End If
        ReDim FileList(.FoundFiles.Count)
        For FileCount = 1 To .FoundFiles.Count
            FileList(FileCount) = .FoundFiles(FileCount)
            FileDongia = Right(FileList(FileCount), _
                         Len(FileList(FileCount)) - Len(Txtduongdan) - 1)
            sItemlist = Left(FileDongia, Len(FileDongia) - 4)
            frmDongia.lstDongia.AddItem sItemlist
        Next FileCount
        'MsgBox "Tong so file Excel trong thu muc la : " & FileCount - 1'
        '.FileType = msoFileTypeExcelWorkbooks'
    End With
 'CreateFileList = FileList'
 'Erase FileList'
End Function

Dòng màu đỏ bị lỗi với thông báo:
"Run-time error "445"
Object doesn't support action"
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đoạn code này ở excell 2003 chạy bình thường nhưng sao qua 2007 không chạy được. Đoạn code này tôi tìm kiếm ở trên diễn đàn GPE của tác giả nào đó mà không nhớ tên (thành thật xin lỗi). Vì kiến thức về VBA kém nên thường xem, tìm kiếm các đoạn code nào thích hợp rồi ứng dụng và không có đóng góp ý kiến. Mong anh chị chỉ giúp. Thanks!
Dòng màu đỏ bị lỗi với thông báo:
"Run-time error "445"
Object doesn't support action"
Đương nhiên là không xài được rồi!
Không cần xem qua ý nghĩa hàm của bạn, nhưng chỉ cần bạn xài FileSearch là không được!
Đơn giản vì Excel 2007 nó không chơi vời FileSearch... vậy thôi (tìm cách khác)
 
Upvote 0
Đương nhiên là không xài được rồi!
Không cần xem qua ý nghĩa hàm của bạn, nhưng chỉ cần bạn xài FileSearch là không được!
Đơn giản vì Excel 2007 nó không chơi vời FileSearch... vậy thôi (tìm cách khác)
Bạn có thể chỉ giúp và cho tôi xin đoạn code có cách làm tương tự như vậy không.Vì thật sự tôi không hiểu lắm về VBA. Thường tôi tìm đoạn code nào có thể ứng dụng thì dò cho chạy từng dòng rồi xem nó làm gì nếu nói ý tưởng không thì cắn bút.
...Anh (chị) nào có thể dành chút thời gian xem qua và chỉ giúp. Thanks!
 
Upvote 0
Bạn có thể chỉ giúp và cho tôi xin đoạn code có cách làm tương tự như vậy không.Vì thật sự tôi không hiểu lắm về VBA. Thường tôi tìm đoạn code nào có thể ứng dụng thì dò cho chạy từng dòng rồi xem nó làm gì nếu nói ý tưởng không thì cắn bút.
...Anh (chị) nào có thể dành chút thời gian xem qua và chỉ giúp. Thanks!
Bạn có thể cho biết bạn dùng code trên để làm gì không?
Sở dĩ tôi hỏi thế là vì tôi thấy nó... lạ lạ thế nào ấy --> Lý nào Function mà cũng có MsgBox nữa sao? Lại còn ClearContennts nữa chứ
Bạn cho 1 file nào đó mà bạn đã từng ứng dụng thành công code này lên đây xem!
 
Upvote 0
Bạn có thể cho biết bạn dùng code trên để làm gì không?
Sở dĩ tôi hỏi thế là vì tôi thấy nó... lạ lạ thế nào ấy --> Lý nào Function mà cũng có MsgBox nữa sao? Lại còn ClearContennts nữa chứ
Bạn cho 1 file nào đó mà bạn đã từng ứng dụng thành công code này lên đây xem!
Hì. Nói bạn đừng cười. Tôi dùng đoạn đó lả để liệt kê danh sách các file có đuôi xls có trong 1 thư mục mình qui định. Còn về Function mà có... chắc là do tôi không hiểu cơ bản về VBA. Ban đầu lúc tìm nó là Sub nhưng là sub thì nó có hiện trong danh sách macro, mà danh sách nhiều quá tôi thấy không thích nên đổi vậy thôi. Nội dung chính là liệt kê danh sách xls trong 1 thu mục định sẳn. Mình gởi ứng dụng mà mình làm thử và đã xoá những đoạn không cần thiết. Chạy file thì trên thanh menu có thêm mục -->dự toán--->Đơn giá---->Chọn file đơn giá, giá vật tư. (đoạn này chạy được trên Excell 2003)
 
Lần chỉnh sửa cuối:
Upvote 0
Hì. Nói bạn đừng cười. Tôi dùng đoạn đó lả để liệt kê danh sách các file có đuôi xls có trong 1 thư mục mình qui định. Còn về Function mà có... chắc là do tôi không hiểu cơ bản về VBA. Ban đầu lúc tìm nó là Sub nhưng là sub thì nó có hiện trong danh sách macro, mà danh sách nhiều quá tôi thấy không thích nên đổi vậy thôi. Nội dung chính là liệt kê danh sách xls trong 1 thu mục định sẳn. Mình gởi ứng dụng mà mình làm thử và đã xoá những đoạn không cần thiết. Chạy file thì trên thanh menu có thêm mục -->dự toán--->Đơn giá---->Chọn file đơn giá, giá vật tư. (đoạn này chạy được trên Excell 2003)
Bạn dùng sub này tôi thấy tiện hơn:
PHP:
Sub GetFileNames()
  Dim fN, MyDir
  With Application.FileDialog(4)
    .Show: MyDir = .SelectedItems(1)
  End With
  With CreateObject("Scripting.FileSystemObject")
    For Each fN In .GetFolder(MyDir).Files
      If InStr(fN.Name, ".xls") Then
        Range("A65536").End(xlUp).Offset(1) = fN.Name
      End If
    Next
  End With
End Sub
Code này sẽ liệt kê tất cả tên file có trong thư mục nào đó (do bạn chọn) vào cột A của sheet hiện hành... Từ đây bạn cứ tùy biến theo ý
Thêm nữa: code này chắc chắn chạy được trên Excel 2007
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom