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.

Api-AufrufeVerwendete 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