Dateien Auflisten

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!

Teile diesen Beitrag

Empfehlungen für dich

VBATrainer Excel VBA Coaching - Lagerverwaltung

Sichere dir jetzt meine kostenlose Lagerverwaltungs-Anwendung