code tìm file theo đường dẫn

Liên hệ QC

Hoacomay96

Thành viên chính thức
Tham gia
18/3/08
Bài viết
96
Được thích
8
Em có tìm thấy trên diễn đàn có code tìm và đếm file (không nhớ tên tác giả-xin lỗi tác giả), nhưng các huynh cho em hỏi với đoạn code này làm thế nào để nếu đường dẫn không có file Excel nào thì báo "không có" và thoát khỏi thủ tục.nếu có thì đếm số file.(với đường dãn là "Txtduongan")
Mã:
Dim CreateFileList As Variant
Dim FileFilter As String, IncludeSubFolder As Boolean
Dim FileList() As String, FileCount As Long
CreateFileList = ""
Erase FileList
If FileFilter = "" Then FileFilter = "*.xls*"
With Application.FileSearch
.NewSearch
.LookIn = Txtduongdan
.FileName = FileFilter
.SearchSubFolders = IncludeSubFolder
.FileType = msoFileTypeAllFiles
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) = 0 Then Exit Sub
ReDim FileList(.FoundFiles.count)
For FileCount = 1 To .FoundFiles.count
FileList(FileCount) = .FoundFiles(FileCount)
Next FileCount
MsgBox "Tong so file Excel trong thu muc la : " & FileCount - 1
.FileType = msoFileTypeExcelWorkbooks
End With
CreateFileList = FileList
Erase FileList
 
Chỉnh sửa lần cuối bởi điều hành viên:
Câu lệnh sau (trích từ code nguyên thủy) thoát ra nếu không tìm thấy file nào.

Mã:
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) [B]= 0 Then Exit Sub[/B]

Giờ ta chỉ việc chỉnh nó thành ra là để báo cho biết không có file XL nào trong thư mục. Bạn cần đổi phần này trong code là làm được việc bạn muốn:

Mã:
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) [B]> 0 Then[/B]
ReDim FileList(.FoundFiles.Count)
For FileCount = 1 To .FoundFiles.Count
FileList(FileCount) = .FoundFiles(FileCount)
Next FileCount
MsgBox "Tong so file Excel trong thu muc la : " & FileCount - 1
.FileType = msoFileTypeExcelWorkbooks
CreateFileList = FileList
Erase FileList
[B]Else[/B]
[B]MsgBox "Khong co file Excel trong thu muc."[/B]
End If
[B]End With[/B]

Chú ý
Mã:
End With
phải để ngoài cái thủ tục if ...else.. end if để đóng cái câu lệnh
Mã:
With Application.FileSearch
phía trên.
 
Upvote 0
Tại bạn để nó bề bộn quá, khó nhìn mà thôi

Vầy nè:
1*/ Tôi đã thêm & sửa các dòng lệnh đã được đánh số bên dưới
2*/ Macro này chỉ tìm các files excel mà thôi; Muốn tìm mọi files phải sửa lại chút nữa;
3*/ Hiện tại muốn thấy tác dụng của hộp thoại 'Không tìm thấy 1 file Excel nào cả" thì bạn sửa lại const vô thư mục nào đó không có chứa loại files excel, nha.
PHP:
Option Explicit
Const Txtduongdan As String = "D:\Picture"

Sub FilesSearch()
 Dim CreateFileList, FileCount As Long
 Dim FileFilter As String
 Dim IncludeSubFolder As Boolean
 Dim FileList() As String

 CreateFileList = ""
 Erase FileList
 If FileFilter = "" Then FileFilter = "*.xls*" 'Xls
    With Application.FileSearch
        .NewSearch
        .LookIn = Txtduongdan
        .Filename = FileFilter
        .SearchSubFolders = IncludeSubFolder
        .FileType = msoFileTypeAllFiles
1        If .Execute(SortBy:=msoSortByFileName, _
            SortOrder:=msoSortOrderAscending) = 0 Then
2            MsgBox "There were no files found."
            Exit Sub
        End If
        ReDim FileList(.FoundFiles.Count)
        
        For FileCount = 1 To .FoundFiles.Count
            FileList(FileCount) = .FoundFiles(FileCount)
        Next FileCount
        
        MsgBox "Tong so file Excel trong thu muc la : " & FileCount - 1
        .FileType = msoFileTypeExcelWorkbooks
    End With
    
 CreateFileList = FileList
 Erase FileList
End Sub
 
Upvote 0
Cảm ơn các anh đã quan tâm chủ đề này. em chưa chạy thử, nhưng có lẽ là được.Anh Sa_DQ cho em hỏi là với txtduongdan em lấy từ hộp nhập textbox thì có nên khai báo là const không ?
 
Upvote 0
Web KT

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

Back
Top Bottom