Der folgende Code läuft etwa 19 mal schneller als mit FileSystemObject. Auf meinem Computer dauerte die Suche nach 4000 Dateien in drei verschiedenen Datenbanken 1,57 Sekunden mit FileSystemObject, aber nur 0,08 Sekunden mit diesem Code.
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
Verwendungsbeispiel:
Debug.Print CountFilesWithGivenExtension("C:\", ".ex*")
(Die "DoEvents" ist nicht notwendig, aber können Sie Pause verwenden/Pause, wenn nötig.)
für diejenigen, die neugierig sind, was 'Debug.Print' tut, siehe: http://stackoverflow.com/questions/2916287/where-does-vba-debug-print-log-to – ecoe