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