Dateien aus Ordner und Unterordner auflisten und verlinken
Einfaches, sicheres und effizientes Datenmanagement sind in heutzutage wichtiger denn je. Oft scheinen Dateien im Ordner-Dschungel mit der Zeit zu verschwinden und eine händische Suche ist mit viel Zeitaufwand verbunden.
Heute möchte ich dir ein nützliches VBA Makro zeigen, das dir Dateien aus Ordnern und Unterordnern automatisch auflistet und sogar mit Hyperlinks verknüpft, sodass du per Klick direkt darauf zugreifen kannst.
Um VBA zu lernen und besser zu verstehen, empfehle ich dir mein kostenloses Grundlagentraining, in dem ich dir die ersten Schritt in Excel-VBA zeige.
Schritt 1: Dateien eines Ordners auslesen
Zuerst benötigst du einen Verweis auf die Microsoft Scripting Runtime Bibliothek, um auf Dateien und Ordner leicht zugreifen zu können. Dies ermöglicht dir eine Schleife über alle Dateien im Ordner zu erstellen und ihre Namen im Direktfenster auszugeben.
'Verweis auf die Microsoft Scripting Runtime Bibliothek
'Extras -> Verweise -> Microsoft Scripting Runtime
Sub DateienAuslesen()
Dim fso As New FileSystemObject
Dim Datei As File
'Schleife über alle Dateien im Ordner
For Each Datei In fso.GetFolder("Pfad_zum_Ordner").Files
'Dateien in Direktfenster schreiben
Debug.Print Datei.Name
Next Datei
End Sub
Schritt 2: Benutzer den Ordner auswählen lassen, neues Tabellenblatt erstellen und Unterprozeduren (Schritt 3 und 4) aufrufen
Um dem Benutzer die Möglichkeit zu geben den Ordner auszuwählen, verwendest du einen Folder Picker. Dieser ermöglicht es dem Benutzer, den Pfad des Ordners festzulegen. Des Weiteren erstellst du mithilfe des Codes ein neues Tabellenblatt, auf dem die Überschriften eingetragen werden und rufts die Unterprozeduren aus Schritt 3 (Dateien auslesen) und Schritt 4 (Unterordner auslesen) auf.
'Verweis auf die Microsoft Scripting Runtime Bibliothek
'Extras -> Verweise -> Microsoft Scripting Runtime
Sub AlleDateienAuslesen()
'Variablen dimensionieren
Dim Ordner As Variant
Dim Pfad As String
'Benutzer Ordner auswählen lassen
Set Ordner = Application.FileDialog(msoFileDialogFolderPicker)
'Prüfen, ob Benutzer einen Ordner ausgewählt hat
If Ordner.Show = False Then Exit Sub
'Pfad definieren
Pfad = Ordner.SelectedItems(1)
'Neues Tabellenblatt erstellen
Worksheets.Add
'Überschriften eintragen
Range("A1:C1").Value = Array("Datei", "Ordner", "Erstellungsdatum")
'Dateien des Ordners auslesen
Call DateienAuslesen(Pfad)
'Dateien der Unterordner auslesen
Call UnterordnerAuslesen(Pfad)
'Spaltenbreite automatisch anpassen
Columns("A:C").AutoFit
End Sub
Schritt 3: Dateien des Ordners auslesen und Hyperlink einfügen
Im nächsten Schritt erstellst du eine Unterprozedur, die die Dateien des aktuellen Ordners (Pfad) ausliest, die Ergebnisse auf das neue Tabellenblatt schreibt und den Hyperlink für den Direktzugriff einfügt.
Sub DateienAuslesen(Pfad As String)
'Variablen dimensionieren
Dim fso As New FileSystemObject
Dim Datei As File
Dim LetzteZeile As Long
'Schleife über alle Dateien im Ordner
For Each Datei In fso.GetFolder(Pfad).Files
'Letzte Zeile herausfinden
LetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
'Ergebnisse ins Tabellenblatt eintragen
Range.Hyperlinks.Add
ActiveSheet.Hyperlinks.Add anchor:=Cells(LetzteZeile, 1), Address:=Datei.Path, TextToDisplay:=Datei.Name
Cells(LetzteZeile, 2).Value = Datei.ParentFolder
Cells(LetzteZeile, 3).Value = Datei.DateCreated
Next Datei
End Sub
Schritt 4: Unterordner auslesen
Um auf Unterordner und deren Dateien zuzugreifen, erstellst du eine weitere Unterprozedur, mit deren Hilfe du alle untergeordneten Ordner des Pfads des Folder Pickers nach Dateien durchsuchen kannst.
Sub UnterordnerAuslesen(Pfad As String)
'Variablen dimensionieren
Dim fso As New FileSystemObject
Dim Unterordner As Folder
'Schleife über alle Unterordner im Ordner
For Each Unterordner In fso.GetFolder(Pfad).SubFolders
'Dateien des Unterordners auslesen
Call DateienAuslesen(Unterordner.Path)
'Prozedur UnterordnerAuslesen wieder aufrufen
Call UnterordnerAuslesen(Unterordner.Path)
Next Unterordner
End Sub
Ich hoffe dieses Tutorial hilft dir dabei, dein Datenmanagement zu verbessern und den Zugriff auf deine Dateien zu erleichtern.
Melde dich gerne für meinen Newsletter an und erhalte regelmäßig Tipps & Tricks rund um das Thema Excel VBA!