Tipp 1.1 - Anzahl Dateien
Wie kann ich die Anzahl bestimmter Dateien in einem Ordner ermitteln?
Mit dieser Funktion können Sie die Anzahl der Dateien aus einem bestimmten Ordner ermitteln. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.
Verwendete Win32-Api-Aufrufe und Typen: FindFirstFile, FindNextFile, FindClose - FILETIME, WIN32_FIND_DATA
Beispiel:
Option Explicit Public Const MAXPATH As Long = 260 Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAXPATH cAlternate As String * 14 End Type Public Declare Function FindFirstFile Lib _ "kernel32" Alias _ "FindFirstFileA" _ (ByVal lpFileName As String, _ lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib _ "kernel32" Alias _ "FindNextFileA" _ (ByVal hFindFile As Long, _ lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindClose Lib "kernel32" _ (ByVal hFindFile As Long) As Long Public Function CountFilesInFolder(sSourcePath As String, _ sFileType As String) _ As Long '// ----------------------------------------------------- '// Methode: | Zählt die Anzahl Dateien in einem Ordner '// ----------------------------------------------------- '// Parameter: | sSourcePath = gültiger Ordnerpfad '// | sFileType = Dateityp '// | (*.*, *.exe, *.bas etc.) '// ----------------------------------------------------- '// Rückgabe: | Anzahl Dateien '// | bei *.* werden alle Einträge gezählt: '// | Ordner und Dateien '// | (inkl. '.' und '..') '// Beispiel: | CountFilesInFolder(App.Path, "*.*") '// ----------------------------------------------------- '// Autor: | Stefan Kulpa '// | EDV Innovation & Consulting - Dormagen '// ----------------------------------------------------- Const INVALID_HANDLE_VALUE As Long = -1 Dim uWFD As WIN32_FIND_DATA Dim lResult As Long Dim lFile As Long Dim lNext As Long Dim lCount As Long CountFilesInFolder = 0 If VBA.Right$(sSourcePath, 1) <> "\" Then sSourcePath = sSourcePath & "\" End If lFile = FindFirstFile(sSourcePath & sFileType, uWFD) If (lFile = INVALID_HANDLE_VALUE) Then Exit Function If lFile Then Do lCount = lCount + 1 lNext = FindNextFile(lFile, uWFD) Loop Until lNext = 0 End If lResult = FindClose(lFile) CountFilesInFolder = lCount End Function