Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zählen von Dateien in Ordnern

Zählen von Dateien in Ordnern
15.11.2019 11:45:59
Dateien
Hallo,
ich habe ein bestimmt für euch winziges Einsteigerproblem. Ich habe in VBA Excel ein Makro geschrieben, das bestimmte Dateien in bestimmten Ordnern zählt.
Das funktioniert zwar aber da es zehn Ordner sind habe ich viel Text geschrieben. Ein Bekannter meinte man köönte das mit Schleifen vereinfachen Do until und so.
Also er soll die Ordner Kunden A, Kunden B, Kunden C, Kunden D oder Kunden1, Kunden2 usw. kann ich entweder so oder so benennen.
Mein Programm soll nun diesen Zählprozess so oft durchlaufen wie ich Ordner habe und solange zählen bis z.B. Kunden10!
Dann erfolgt die Ausgabe der Anzahl in ein Worksheet getrennt nach Ordner also für alle ORDNER! lngFileCounter + 1 (Ende der Zählung habe ich über vbNullString definiert!
Wie erreiche ich das jetzt?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählen von Dateien in Ordnern
15.11.2019 12:49:06
Dateien
Hallo Lisa,
hier ein entsprechendes Makro.
Der Hauptordner wird in einem Dialog ausgewählt. Du kannst den Ordnernamen im Code natürlich auch fest der Variablen varfolder zuweisen und den Dialog weglassen.
LG
Franz
Sub DateienZaehlen()
Dim fso As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim varfolder
Dim wks As Worksheet
Dim Zeile As Long
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Hauptordner mit den zu durchsuchenden Unterverzeichnissen wählen"
If .Show = -1 Then
varfolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
Set objFolder = fso.getfolder(varfolder)
For Each objSubFolder In objFolder.subFolders
If Left(objSubFolder.Name, Len("Kunden")) = "Kunden" Then
If wks Is Nothing Then
'Neue Arbeitsmappe mit einem Tabellenblatt anlegen für Ausgabe
Workbooks.Add Template:=xlWBATWorksheet
Set wks = ActiveWorkbook.Worksheets(1)
Zeile = 1
With wks
.Cells(Zeile, 1) = "Ordner"
.Cells(Zeile, 2) = varfolder
Zeile = 3
.Cells(Zeile, 1) = "Unter-Ordner"
.Cells(Zeile, 2) = "Anzahl Dateien"
End With
End If
'Debug.Print objSubFolder.Name & " - Dateien: " & objSubFolder.Files.Count
With wks
Zeile = Zeile + 1
.Cells(Zeile, 1) = objSubFolder.Name
.Cells(Zeile, 2) = objSubFolder.Files.Count
End With
End If
Next
If Zeile > 0 Then wks.Columns(1).AutoFit
Set fso = Nothing: Set objFolder = Nothing: Set objSubFolder = Nothing
Set wks = Nothing
End Sub

Anzeige
AW: Zählen von Dateien in Ordnern
15.11.2019 13:56:57
Dateien
Hallo,
ja, vielen Dank! Aber nehmen wir an die Ordner heißen 1,2, 3usw. kann man dann keine Schliefe machen die hochzählt, also immer Ordner 1, Ordner 2 usw.?
AW: Zählen von Dateien in Ordnern
15.11.2019 15:20:36
Dateien
Hallo Lisa,
man kann so suchen. Allerdings dauert das Makro dann etwas länger, da die Ordnernamen dann 10-mal geprüft werden müssen. Falls jede Endzahl nur einmal in einem Unterordner vorkommt, dann kann man abkürzen und die innere Schleife verlassen, sobald ein Ordner gefunden
Wenn Endzahlen größer 10 vorkommen können, dann muss man eine andere Lösung für die Suche wählen.
LG
Franz
Sub DateienZaehlen_var02()
Dim fso As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim varfolder
Dim wks As Worksheet
Dim Zeile As Long
Dim iCount As Integer
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Hauptordner mit den zu durchsuchenden Unterverzeichnissen wählen"
If .Show = -1 Then
varfolder = .SelectedItems(1)
Else
Exit Sub
End If
End With
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
Set objFolder = fso.getfolder(varfolder)
For iCount = 1 To 10
For Each objSubFolder In objFolder.subFolders
'Alle Ordner mit Ziffer am Ende finden
If Right(objSubFolder.Name, Len(Format(iCount, "0"))) = Format(iCount, "0") Then
If wks Is Nothing Then
'Neue Arbeitsmappe mit einem Tabellenblatt anlegen für Ausgabe
Workbooks.Add Template:=xlWBATWorksheet
Set wks = ActiveWorkbook.Worksheets(1)
Zeile = 1
With wks
.Cells(Zeile, 1) = "Ordner"
.Cells(Zeile, 2) = varfolder
Zeile = 3
.Cells(Zeile, 1) = "Unter-Ordner"
.Cells(Zeile, 2) = "Anzahl Dateien"
End With
End If
'Debug.Print objSubFolder.Name & " - Dateien: " & objSubFolder.Files.Count
With wks
Zeile = Zeile + 1
.Cells(Zeile, 1) = objSubFolder.Name
.Cells(Zeile, 2) = objSubFolder.Files.Count
End With
Exit For 'nur wenn jede Endzahl nur einmal im Unterordner vorkommt
End If
Next
Next iCount
If Zeile > 0 Then
With wks
.Columns(1).AutoFit
End With
End If
Set fso = Nothing: Set objFolder = Nothing: Set objSubFolder = Nothing
Set wks = Nothing
End Sub

Anzeige
AW: Alle Dateien auflisten, Anzahl je Ordner etc.
15.11.2019 14:21:01
Dieter(Drummer)
Halli Lisa,
evtl. kannst Du damit etwas anfangen: https://www.herber.de/bbs/user/133241.xlsm
Info: in C2 Laufwerk mit Hauptordner eingeben. Es werden alle Dateien des Kauptordners und Unterordenern mit Hyperlink aufgelistet. Viel Saß damit ...
Gruß, Dieter(Drummer)
Anzeige
AW: Alle Dateien auflisten, Anzahl je Ordner etc.
15.11.2019 15:35:52
Lisa
Danke! Aber bringt mir nichts!
;

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

Zählen von Dateien in Ordnern mit VBA


Schritt-für-Schritt-Anleitung

Um die Anzahl der Dateien in Ordnern mit VBA zu zählen, kannst du das folgende Makro verwenden. Dieses Makro zählt alle Dateien in bestimmten Unterordnern und gibt die Ergebnisse in einem neuen Arbeitsblatt aus.

  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. Füge den folgenden Code in das Modul ein:
Sub DateienZaehlen()
    Dim fso As Object
    Dim objFolder As Object
    Dim objSubFolder As Object
    Dim varfolder
    Dim wks As Worksheet
    Dim Zeile As Long
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Bitte Hauptordner mit den zu durchsuchenden Unterverzeichnissen wählen"
        If .Show = -1 Then
            varfolder = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    Set objFolder = fso.getfolder(varfolder)
    For Each objSubFolder In objFolder.subFolders
        If Left(objSubFolder.Name, Len("Kunden")) = "Kunden" Then
            If wks Is Nothing Then
                Workbooks.Add Template:=xlWBATWorksheet
                Set wks = ActiveWorkbook.Worksheets(1)
                Zeile = 1
                With wks
                    .Cells(Zeile, 1) = "Ordner"
                    .Cells(Zeile, 2) = varfolder
                    Zeile = 3
                    .Cells(Zeile, 1) = "Unter-Ordner"
                    .Cells(Zeile, 2) = "Anzahl Dateien"
                End With
            End If
            With wks
                Zeile = Zeile + 1
                .Cells(Zeile, 1) = objSubFolder.Name
                .Cells(Zeile, 2) = objSubFolder.Files.Count
            End With
        End If
    Next
    If Zeile > 0 Then wks.Columns(1).AutoFit
    Set fso = Nothing: Set objFolder = Nothing: Set objSubFolder = Nothing
    Set wks = Nothing
End Sub
  1. Führe das Makro aus, um die Anzahl der Dateien in den gewünschten Ordnern zu ermitteln.

Häufige Fehler und Lösungen

  • Fehler: Makro läuft nicht oder zeigt keinen Dialog an.

    • Lösung: Stelle sicher, dass die Sicherheitsoptionen für Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die entsprechenden Optionen.
  • Fehler: Keine Dateien gezählt.

    • Lösung: Überprüfe, ob die Ordner korrekt benannt sind und ob sie das Präfix "Kunden" enthalten.

Alternative Methoden

Eine alternative Methode zur Zählung der Dateien in Ordnern ist die Verwendung von Schleifen, um gezielt nach Ordnernamen zu suchen. Hier ist ein Beispielcode:

Sub DateienZaehlen_var02()
    Dim fso As Object
    Dim objFolder As Object
    Dim objSubFolder As Object
    Dim varfolder
    Dim wks As Worksheet
    Dim Zeile As Long
    Dim iCount As Integer
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Bitte Hauptordner mit den zu durchsuchenden Unterverzeichnissen wählen"
        If .Show = -1 Then
            varfolder = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With
    Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    Set objFolder = fso.getfolder(varfolder)
    For iCount = 1 To 10
        For Each objSubFolder In objFolder.subFolders
            If Right(objSubFolder.Name, Len(Format(iCount, "0"))) = Format(iCount, "0") Then
                ' Code hier zur Zählung der Dateien
            End If
        Next
    Next iCount
End Sub

Diese Methode kann nützlich sein, wenn du Ordner mit fortlaufenden Nummern hast.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Anzahl der Dateien in Ordnern mit VBA ermitteln kannst:

  1. Zählen der Dateien in Unterordnern mit spezifischem Namen:

    • Wenn du nur die Dateien in Ordnern zählen möchtest, die mit "Projekte" beginnen, passe den Code entsprechend an.
  2. Auflisten aller Dateien eines Ordners:

    • Verwende den Code excel vba alle dateien eines ordners auflisten, um eine Liste aller Dateien in einem Hauptordner und seinen Unterordnern zu erstellen.

Tipps für Profis

  • Verwende die FileSystemObject-Bibliothek, um die Arbeit mit Dateien und Ordnern zu erleichtern.
  • Nutze Fehlerbehandlungsmechanismen in deinem VBA-Code, um unerwartete Fehler abzufangen und die Benutzererfahrung zu verbessern.
  • Experimentiere mit Schleifen und Bedingungen, um deine Makros dynamischer zu gestalten und die Effizienz zu steigern.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Dateien in einem Ordner zählen?
Du kannst das VBA-Makro verwenden, um die Anzahl der Dateien in einem oder mehreren Ordnern zu ermitteln. Stelle sicher, dass der Ordner korrekt ausgewählt ist.

2. Was, wenn ich mehr als 10 Ordner habe?
Du kannst die Schleife im VBA-Code anpassen, um so viele Ordner wie nötig zu zählen. Ändere einfach die maximale Anzahl in der Schleife.

3. Gibt es eine Möglichkeit, die Dateinamen aufzulisten?
Ja, du kannst den Code anpassen, um die Dateinamen zusätzlich zur Anzahl der Dateien in einer Liste oder Tabelle aufzulisten.

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