Dateien im Verzeichnis zählen mit Excel VBA
Schritt-für-Schritt-Anleitung
Um die Anzahl der Dateien in einem Ordner mit Excel VBA zu ermitteln, kannst Du das folgende Makro verwenden. Dieses Makro ermöglicht es Dir, das Verzeichnis auszuwählen und zählt alle Dateien, die sich darin befinden.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Kopiere den folgenden Code in das Modul:
Option Explicit
Sub test()
Dim strPath As String
strPath = ShellBrowseForFolder("D:\")
If Len(strPath) Then
MsgBox countFiles(Directory:=strPath, SubFolders:=True)
End If
End Sub
Private Function ShellBrowseForFolder(Optional StartPath As String = "") As String
Dim objShell As Object
Dim lngRoot As Long
Dim objFolder As Object
lngRoot = 17
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Ordner auswählen", 0, IIf(Len(StartPath), StartPath, lngRoot))
If Not objFolder Is Nothing Then
ShellBrowseForFolder = objFolder.Self.Path
End If
Set objFolder = Nothing
Set objShell = Nothing
End Function
Private Function countFiles(ByVal Directory As String, Optional ByVal FileName As String = "", Optional ByVal SubFolders As Boolean = False) As Long
Dim objFSO As Object, objFolder As Object, objFile As Object, objSubF As Object
Dim lngCount As Long
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Directory)
If Len(FileName) Then
For Each objFile In objFolder.Files
If objFile.Name Like FileName Then lngCount = lngCount + 1
Next
Else
lngCount = objFolder.Files.Count
End If
If SubFolders Then
For Each objSubF In objFolder.SubFolders
lngCount = lngCount + countFiles(objSubF.Path, FileName, SubFolders)
Next
End If
countFiles = lngCount
Set objSubF = Nothing
Set objFile = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
End Function
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro
test
aus, um die Anzahl der Dateien im ausgewählten Ordner zu zählen.
Häufige Fehler und Lösungen
-
Variable nicht definiert: Dies kann passieren, wenn Du eine Excel-Version verwendest, in der das msoFileDialogFolderPicker
nicht unterstützt wird. In diesem Fall solltest Du die ShellBrowseForFolder
-Funktion verwenden, wie im obigen Beispiel gezeigt.
-
Pfad wird nicht korrekt angezeigt: Achte darauf, dass der Pfad korrekt angegeben ist. Verwende die Funktion ShellBrowseForFolder
, um sicherzustellen, dass Du den richtigen Ordner auswählst.
Alternative Methoden
Eine alternative Methode zur Zählung der Dateien in einem Ordner ist die Nutzung eines einfachen VBA-Codes ohne Benutzeroberfläche. Hier ist ein Beispiel:
Sub CountFilesInFolder()
Dim count As Long
count = CreateObject("Scripting.FileSystemObject").GetFolder("C:\Lager\Osram\Bestand\2017\").Files.Count
MsgBox count
End Sub
Dieser Code zählt die Dateien im angegebenen Ordner und zeigt das Ergebnis in einer MessageBox an.
Praktische Beispiele
-
Zählen der DOCX-Dateien in einem Ordner:
Ändere die countFiles
-Funktion, um nur DOCX-Dateien zu zählen:
lngCount = lngCount + countFiles(Directory:=strPath, FileName:="*.docx", SubFolders:=True)
-
Ergebnisse in einem Arbeitsblatt speichern:
Um die Anzahl der Dateien in eine bestimmte Zelle (z.B. B1) zu schreiben, kannst Du diesen Code verwenden:
Cells(1, 2) = countFiles(Directory:=strPath, SubFolders:=True)
Tipps für Profis
-
Verwende Option Explicit
: Dies zwingt Dich, alle Variablen zu deklarieren, was hilft, Fehler zu vermeiden.
-
Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinem Code, um unerwartete Probleme zu erkennen und zu beheben.
-
Dokumentiere Deinen Code: Schreibe Kommentare, um die Funktionsweise Deines Codes zu erläutern, damit Du und andere ihn später leichter verstehen.
FAQ: Häufige Fragen
1. Wie kann ich die Anzahl der Dateien in einem spezifischen Unterordner zählen?
Verwende die countFiles
-Funktion und gib den Pfad des Unterordners an.
2. Was muss ich tun, wenn mein Pfad Leerzeichen enthält?
Achte darauf, den Pfad in Anführungszeichen zu setzen und sicherzustellen, dass er korrekt formatiert ist.
3. Kann ich das Ergebnis in mehreren Zellen speichern?
Ja, Du kannst die Zellen in Deinem Arbeitsblatt anpassen und die Ergebnisse in verschiedenen Zellen speichern, indem Du die Cells
-Methode entsprechend änderst.