ist es möglich, per VBA die Anzahl der Ordner zu zählen, die sich in einem Verzeichnis befinden?
also ich möchte wissen, wieviele Ordner (ohne weitere Unterordner) befinden sich in C:\Test
Gruß
Steffen
Sub DateienAuflisten()
Dim i As Long
Const verz = "C:\Users\Ing.Grohn\Documents\" '"C:\Eigene Dateien\"
Load UF_Dateiliste
On Error GoTo Fehler
ChDir verz
Sheets("Tabelle1").Activate
Range("A1").Select
With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.FileType = msoFileTypeAllFiles
.Execute
For i = 1 To .FoundFiles.Count
cells(i,1).value= .FoundFiles(i)
Next i
End With
UF_Dateiliste.Show
Exit Sub
Fehler:
MsgBox "Es gibt kein Verzeichnis mit dem Namen " & verz
'msofileType kann eine der folgenden MsoFileType-Konstanten sein:
'msofileTypeAllFiles
'msofileTypeBinders
'msofileTypeCalendarItem
'msofileTypeContactItem
'msofileTypeCustom
'msofileTypeDatabases
'msofileTypeDataConnectionFiles
'msofileTypeDesignerFiles
'msofileTypeDocumentImagingFiles
'msofileTypeExcelWorkbooks
'msofileTypeJournalItem
'msofileTypeMailItem
'msofileTypeNoteItem
'msofileTypeOfficeFiles
'msofileTypeOutlookItems
'msofileTypePhotoDrawFiles
'msofileTypePowerPointPresentations
'msofileTypeProjectFiles
'msofileTypePublisherFiles
'msofileTypeTaskItem
'msofileTypeTemplates
'msofileTypeVisioFiles
'msofileTypeWebPages
'msofileTypeWordDocuments
End Sub
Option Explicit
Sub AnzVerz()
Dim strT As String, lngA As Long
Const strVz As String = "c:\test\"
strT = Dir(strVz, vbDirectory)
If strT "" Then
If strT "." And strT ".." And _
(GetAttr(strVz & strT) And vbDirectory) = vbDirectory Then
lngA = lngA + 1
' Debug.Print lngA & " " & strT
End If
While strT ""
If strT "." And strT ".." And _
(GetAttr(strVz & strT) And vbDirectory) = vbDirectory Then
lngA = lngA + 1
' Debug.Print lngA & " " & strT
End If
strT = Dir
Wend
End If
MsgBox lngA & " Verzteichnisse in " & strVz
End Sub
Option Explicit
Sub AnzVerz2()
Dim strT As String, lngA As Long
Const strVz As String = "f:\exc\"
strT = Dir(strVz, vbDirectory)
While strT ""
If strT "." And strT ".." And _
(GetAttr(strVz & strT) And vbDirectory) = vbDirectory Then
lngA = lngA + 1
Debug.Print lngA & " " & strT
End If
strT = Dir
Wend
MsgBox lngA & " Verzteichnisse in " & strVz
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-LintfortUm die Anzahl der Ordner in einem bestimmten Verzeichnis mit VBA zu zählen, gehe wie folgt vor:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)", wähle Einfügen
und dann Modul
.
Kopiere den folgenden Code in das Modul:
Option Explicit
Sub AnzVerz()
Dim strT As String, lngA As Long
Const strVz As String = "C:\Test\" ' Hier den Pfad anpassen
strT = Dir(strVz, vbDirectory)
If strT <> "" Then
If strT <> "." And strT <> ".." And _
(GetAttr(strVz & strT) And vbDirectory) = vbDirectory Then
lngA = lngA + 1
End If
While strT <> ""
If strT <> "." And strT <> ".." And _
(GetAttr(strVz & strT) And vbDirectory) = vbDirectory Then
lngA = lngA + 1
End If
strT = Dir
Wend
End If
MsgBox lngA & " Verzeichnisse in " & strVz
End Sub
Passe den Pfad (strVz
) zu dem Verzeichnis an, dessen Ordner du zählen möchtest.
Führe das Makro aus: Drücke F5
oder gehe zu Run
> Run Sub/UserForm
.
Fehler: "Es gibt kein Verzeichnis mit dem Namen"
Fehler: "Typ nicht definiert"
Wenn du keine VBA verwenden möchtest, kannst du auch die Windows-Eingabeaufforderung nutzen, um die Anzahl der Ordner zu zählen:
cmd
).cd C:\Test
.dir /ad /b | find /c /v ""
Dieser Befehl zählt die Anzahl der Ordner im angegebenen Verzeichnis.
Hier sind einige Beispiele, wie der VBA-Code angepasst werden kann:
Zählen der Ordner in einem anderen Verzeichnis:
Ändere den Wert von Const strVz
:
Const strVz As String = "D:\Projekte\"
Verwendung von Debug.Print um die Ordnernamen anzuzeigen:
Füge Debug.Print strT
innerhalb der While-Schleife hinzu, um die Namen der gefundenen Ordner im Direktfenster anzuzeigen.
Verwende Error Handling: Um sicherzustellen, dass dein Makro nicht abstürzt, füge eine Fehlerbehandlungsroutine hinzu:
On Error Resume Next
Optimiere die Leistung: Wenn du mit großen Verzeichnissen arbeitest, kann es hilfreich sein, die Berechnung in Excel vorübergehend zu deaktivieren, um die Ausführungsgeschwindigkeit zu erhöhen:
Application.Calculation = xlCalculationManual
1. Kann ich den Code anpassen, um auch Unterordner zu zählen?
Ja, du kannst eine rekursive Funktion erstellen, wenn du auch Unterordner zählen möchtest.
2. Welche Excel-Version wird benötigt?
Der oben angegebene Code funktioniert ab Excel 2007 (XL12) und höher. Achte darauf, dass das FileSearch-Objekt in neueren Versionen entfernt wurde.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen