Mal angenommen man hat nicht viele Ordner mit VBA und Excel zu erstellen, sondern den umgekehrter Fall. Das heißt es existiert ein Verzeichnis mit ganz vielen Unterordnern auf einem Laufwerk und aus irgendwelchen Gründen benötigt man dies Unterverzeichnisse in Form einer Liste, um diese weiterzubearbeiten.
Ausgangssituation: viele Unterverzeichnisse müssen in Exceltabelle übertragen werden
Ein fiktiver Anwendungsfall: Man hat viele Dokumente, die man jemanden oder einer anderen Firma übergeben muss. Diese Dokument sind in vielen einzelnen Ordnern strukturiert. Nun möchte man den Fortschritt und Status der Dokumentenübergabe in Form einer Excel-Liste dokumentieren. Nun wäre es ein mühsames ineffizientes Arbeiten, wenn man jeden Ordnernamen einzeln abtippt in die Exceltabelle. Ein solcher Prozess muss automatisiert werden. Dies geht am besten unter Verwendung von VBA. Das ist also die Ausgangssituation.
Makro zum Auslesen der Unterordner
Um alle Verzeichnisnamen auszulesen, fügt man in dem Visual-Basic-Editor das folgende Makro ein.
Option Explicit
Public Sub OrdnerAuflisten()
Dim objFSO As Object
Dim folder As Object
Dim strPfad As String
Dim subFolder As Object, colSubfolders As Object
Dim i As Integer
'Pfad hier ersetzen zum Verzeichnis, das ausgelesen werden soll
strPfad = "C:\Users\DeinUserName\Desktop\temp\Bildordner"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set folder = objFSO.GetFolder(strPfad)
Set colSubfolders = folder.Subfolders
'hier Startzeile-1 für Excel festlegen
i = 1
For Each subFolder In colSubfolders
i = i + 1
Range("A" & i).Value = subFolder.Name
Next subFolder
Set folder = Nothing
Set colSubfolders = Nothing
Set objFSO = Nothing
End Sub
Das Makro ist vorzugsweise in der zugehörigen Tabelle einzufügen, in welcher die Unterordner aufgelistet werden sollen. Hier im Beispiel ist es die Tabelle 2. Fügt man das Makro der Arbeitsmappe zu, müsste man noch festlegen auf welche Tabelle es sich bezieht.
Nun noch den Verzeichnispfad anpassen, der ausgelesen werden soll, und die Zeile (Variable i) und Spalte (Buchstabe bei Range [A]) festlegen, bei welcher Zelle begonnen werden soll mit den Eintragungen der Ordnernamen.
Ergebnis
Ist das alles erledigt, dann kann man das Makro über das grüne Wiedergabe-Symbol im VBA-Editor oder über die “Entwicklertools” (Alt+F8) im Exceltabellenblatt ausführen.
Für das hier gezeigte Beispiel sieht das Ergebnis dann wie im nachfolgenden Bild aus.
Neben dem Auslesen von Ordnern lassen sich mit VBA auch ganze Webseiten auslesen.
Hallo Daniel,
super Code, vielen Dank. Wenn ich fortlaufende Nummern in meinem Ordner habe, sortiert Excel die “1000” bei den “110ern” ein. Wie muss der Code angepasst werden, damit meine Sortierung in Excel dann auch so aussieht: Spalten= 998 / 999 / 1000
Danke für deine Hilfe