Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1476to1480
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anzahl aller Ordner per VBA

Anzahl aller Ordner per VBA
29.02.2016 17:10:27
Vic
Hallo,
ich scheitere gerade an folgender Problemstellung:
Ich möchte per VBA prüfen, ob in einem zuvor gewählten Verzeichnis eine bestimmte Anzahl Unterordner (gesamte Ordnerstruktur) überschritten wird. Also die Anzahl Ordner, die man in den Ordnereigenschaften "Inhalt" beim Windows-Explorer angezeigt bekommen würde.
Mit SubFolders.Count wird mir nur die jeweils erste Ebene ausgegeben.
Wie bekomme ich die Gesamtzahl aller Unter- und Unterordner in beliebiger Tiefe in eine Variable, die ich abprüfen kann? Ich möchte dabei ungern mit Hilfstabellen arbeiten, die das Verzeichnis samt Dateien erst auslesen und auflisten etc. - dazu habe ich genug Code im Archiv gefunden, aber mir genügt die Anzahl in einer Variablen. Die Anzahl der enthaltenen Dateien ist auch unerheblich.
Danke für eure Hilfe
Vic

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Anzahl aller Ordner per VBA
29.02.2016 17:36:56
Anton
Hallo Vic,
Sub ordner_anzahl()
Dim objShell As Object, objExec As Object
Dim vntRet As Variant, strFolder As String
strFolder = "F:\2013" 'anpassen
Set objShell = CreateObject("WScript.Shell")
ChDrive Left(strFolder, 1)
ChDir strFolder
Set objExec = objShell.Exec("cmd /c dir /s /b /a:d")
vntRet = Split(objExec.StdOut.ReadAll, vbCrLf)
If UBound(vntRet) > 0 Then MsgBox UBound(vntRet)
Set objShell = Nothing
Set BrowseDir = Nothing
End Sub
mfg Anton

AW: Anzahl aller Ordner per VBA
29.02.2016 17:39:27
Daniel
Hi
mit folgendem Code kannst du die Anzahl der Unterordner in einem Verzeichnis zählen.
beim ersten IF wird die maximale Strukturtiefe festgelegt:
Sub Unterordner_Zählen()
Dim Ordner() As String
Dim i As Long
Dim Datei As String
ReDim Ordner(0)
Ordner(0) = "C:\Daten\"
i = 0
Do While i  ""
If (GetAttr(Ordner(i) & Datei) And vbDirectory) = vbDirectory Then
If Not Datei Like ".*" Then
ReDim Preserve Ordner(UBound(Ordner) + 1)
Ordner(UBound(Ordner)) = Ordner(i) & Datei & "\"
End If
End If
Datei = Dir
Loop
End If
i = i + 1
Loop
MsgBox "Anzahl Unterordner = " & UBound(Ordner)
End Sub
Gruß Daniel

Anzeige
AW: Anzahl aller Ordner per VBA
01.03.2016 09:10:02
Vic
Danke Anton und Daniel - beide Varianten funktionieren, wobei die von Anton etwas schneller ist. _ Allerdings wird dabei kurz das cmd-Fenster angezeigt (stört mich aber nicht). In der letzten Zeile hat sich ein Fehler eingeschlichen. Richtig müsste dort mit

Set objExec = Nothing
entladen werden?
Danke und Gruß!
Vic

AW: Anzahl aller Ordner per VBA: cmd dir
01.03.2016 09:20:42
Michael
Hallo,
es ist mit xl zwar möglich, die Aufgabe zu lösen, aber warum xl?
Der cmd-Befehl "dir" mit dem richtigen Schalter und "grösser-Zeichen Datei-Name" schreibt die ganze Liste in eine Txt-Datei, die dann mit xl geöffnet und bearbeitet werden kann.
Mfg

Anzeige
AW: Anzahl aller Ordner per VBA: cmd dir
01.03.2016 10:11:31
Vic
Hallo Michael,
die Abfrage der Verzeichnistiefe dient nur der Absicherung des restlichen Codes, mit dem ich die NTFS-Berechtigungen auslese und in einer Tabelle aufliste. Damit das ganze händelbar bleibt (und ich nicht immer vorher das Netzlaufwerk durchklicken muss) prüfe ich vorab, wie viele Ordner in einem Verzeichnis liegen. Wird eine gewisse Ordner-Anzahl überschritten, kann ich die Aktion abbrechen und eine Ebene tiefer auslesen.
Gruß Vic

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige