Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien im Verzeichnis zählen

Dateien im Verzeichnis zählen
21.05.2018 10:08:19
sigrid
Guten Morgen,
ich such ein Makro für das Zählen der vorhandenen Dateien im
Verzeichnis. Egal Excel oder auch DOCX.
In der aktuellen Datei: Mappe "Bestand"
Mein Verzeichnis: "C:\Lager\Osram\Bestand\2017\01 Januar\"
Im Jahr stehen die Monate von 01 Januar bis 12 Dezember
Schön wäre es wenn man das Verzeichnis auswählen könnte.
mit freundlichen Gruß
sigrid
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien im Verzeichnis zählen
21.05.2018 11:44:06
Sepp
Hallo Sigrid,
Modul Modul1
Option Explicit 
 
Sub test() 
  Dim strPath As String 
 
  With Application.FileDialog(msoFileDialogFolderPicker) 
    .InitialFileName = "D:\" 
    .Title = "Dateien zählen - Ordnerauswahl" 
    .ButtonName = "Zählen..." 
    .InitialView = msoFileDialogViewList 
    If .Show = -1 Then 
      strPath = .SelectedItems(1) 
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\" 
    End If 
  End With 
 
  If Len(strPath) Then 
 
    MsgBox countFiles(Directory:=strPath, SubFolders:=True) 
 
  End If 
 
End Sub 
 
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 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Danke für die Hilfe ! Bleibt stehen...
21.05.2018 14:41:09
sigrid
Hallo Sepp,
bleibt hier stehen, msoFileDialogFolderPicker
"Variable nicht definiert"
mfg
sigrid
AW: Danke für die Hilfe ! Bleibt stehen...
21.05.2018 14:56:33
Sepp
Hallo Sigrid,
sorry, hatte deine xl-Version nicht beachtet.
Modul Modul1
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 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Das klappt einwandfrei, wie ...
21.05.2018 15:11:49
sigrid
Hallo Sepp,
klappt ohne Probleme.
Vielleicht kannst Du mich noch unterstützen, ich möchte das Ergebnis in die
aktuelle Sheet B1 setzen und die nächste Auswahl in B2 setzen...
mfg sigrid
AW: Das klappt einwandfrei, wie ...
21.05.2018 15:16:35
Sepp
Hallo Sigrid,
der Rest bleibt unverändert!
Sub test()
  Dim strPath As String, lngRow As Long

  strPath = ShellBrowseForFolder("D:\")

  If Len(strPath) Then
    If Range("B1") = "" Then
      lngRow = 1
    Else
      lngRow = Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    Cells(lngRow, 2) = countFiles(Directory:=strPath, SubFolders:=True)
  End If

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Geil, oh na ja einfach toll
21.05.2018 15:47:29
sigrid
Hallo Sepp einfach toll !
Wenn ich die Zahlen der Monate jetzt einsetzte, habe auf B5 geändert,
würde es Sinn machen der ausgewählten Namen in die Zelle ab A5 ebenfalls einzusetzen,
geht das ?
mfg
sigrid
AW: Geil, oh na ja einfach toll
21.05.2018 15:49:48
Sepp
Hallo Sigrid,
ob es Sinn macht, musst schon du entscheiden.
so?
Sub test()
  Dim strPath As String, lngRow As Long

  strPath = ShellBrowseForFolder("D:\")

  If Len(strPath) Then
    If Range("B5") = "" Then
      lngRow = 5
    Else
      lngRow = Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    Cells(lngRow, 1) = strPath
    Cells(lngRow, 2) = countFiles(Directory:=strPath, SubFolders:=True)
  End If

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Einwandfrei, danke Sepp für alles !!! -)
21.05.2018 15:56:34
sigrid
Eine kleine Nachfrage !
21.05.2018 16:21:04
sigrid
Hallo Sepp,
ich habe das Makro nochmal erstellt und in Test2 umbenannt, habe
die Zeilen für das Einsetzen richtig gemacht.
Das Problem, es wird nicht der Pfad angezeigt wie beim ersten Makro,
sondern die Gesamtauswahl vom PC.
Was muß ich ändern ?
gruß
sigrid
AW: Eine kleine Nachfrage !
21.05.2018 16:31:13
Sepp
Hallo Sigrid,
hier
strPath = ShellBrowseForFolder("D:\")
gibst du das Startverzeichnis an.
Sonst bitte deinen gesamten Code zeigen.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
Erledigt Pfad war mit \ versehen... --))
21.05.2018 16:31:38
sigrid
AW: Dateien im Verzeichnis zählen
21.05.2018 14:38:35
snb

Sub M_snb()
MsgBox CreateObject("scripting.filesystemobject").getfolder("G:\OF").Files.Count
End Sub

AW: Dateien im Verzeichnis zählen
21.05.2018 15:13:42
sigrid
Hallo snb,
leider klappt das nicht. Anzeige 0
Sub M_snb()
MsgBox CreateObject("scripting.filesystemobject").getfolder("C:\Lager\Osram\Bestand\2017\"). _
Files.Count
End Sub
mfg
sigrid
Anzeige
AW: Dateien im Verzeichnis zählen
21.05.2018 16:43:43
snb
Check das Pfad.
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. 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
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. 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

  1. 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)
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige