Mã sau chạy nhanh hơn khoảng 19 lần so với sử dụng FileSystemObject. Trên máy tính của tôi, việc tìm kiếm 4000 tệp trong ba drectories khác nhau mất 1,57 giây bằng FileSystemObject, nhưng chỉ 0,08 giây sử dụng mã này.
Public Function CountFilesWithGivenExtension(_
i_strFolderWithTerminalBackslant As String, _
i_strExtensionIncludingPeriod As String _
) As Long
If Len(Dir$(i_strFolderWithTerminalBackslant & "*" _
& i_strExtensionIncludingPeriod)) > 0 Then
CountFilesWithGivenExtension = 1
While Len(Dir$) > 0
CountFilesWithGivenExtension = _
CountFilesWithGivenExtension + 1
DoEvents
Wend
Else
CountFilesWithGivenExtension = 0
End If
End Function
mẫu sử dụng:
Debug.Print CountFilesWithGivenExtension("C:\", ".ex*")
(Các "DoEvents" là không cần thiết, nhưng cho phép bạn sử dụng Pause/Break nếu cần thiết.)
Nguồn
2014-03-10 20:42:40
cho những người tò mò những gì 'Debug.Print' nào, hãy xem điều này: http://stackoverflow.com/questions/2916287/where-does-vba-debug-print-log-to – ecoe