Dateinamen eines Verzeichnisses mit VBA auslesen und in Excel schreiben

Mit einem kleinen Makro können Sie ganz bequem sämtliche Dateinamen inklusive der Dateiendungen in Excel schreiben. Das nachfolgende Makro brauchen Sie hierfür lediglich in ein Modul Ihrer Exceldatei hinzufügen. Alternativ können Sie auch die im Anschluss an diesen Beitrag anghängte Musterdatei nutzen.

Bevor Sie starten gibt es zwei Wichtige Punkte zu beachten. Vor dem Ausführen des Makros müssen Sie den Ordnername noch abhändern. Im Beispiel würde das Makro ansonsten im Laufwerk “C:\” den Ordner mit dem Namen “Ordnername” suchen und falls vorhanden die Dateien dieses Ordners in Spalte A ab Zeile 1 auflisten. Sofern der Ordnerpfad nicht vorhanden ist, erhalten Sie die Fehlermeldung “Laufzeitfehler ’76’: Pfad nicht gefunden”.

Laufzeitfehler 76

Achten Sie zudem darauf, dass in der Tabelle keine Inhalte in Spalte A vorhanden sind, da diese sonst ggf. überschrieben werden! Möchten Sie die Dateinamen nicht schon ab Zeile 1, sondern z.B. erst ab Zeile 5 schreiben. Ändern Sie im VBA Code zudem den Code von

lngZeile = 1

auf

lngZeile = 5

ab.

Der gesamte Quellcode für dieses Makro lautet wie folgt:

Sub DateienAuflisten()

Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object

Set objFileSystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFileSystem.GetFolder("C:\Ordnername")
Set objDateienliste = objVerzeichnis.Files

lngZeile = 1

For Each objDatei In objDateienliste
     If Not objDatei Is Nothing Then
          ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
          lngZeile = lngZeile + 1
     End If
Next objDatei

End Sub

Möchten Sie zudem nicht alle Dateinamen in Excel schreiben, können Sie auch anhand einer weiteren kleinen Modifikation bestimmte Dateiendungen oder Dateinamen ausschließen. Ändern Sie hierfür die Zeile mit dem VBA Code:

If Not objDatei Is Nothing Then

in

If Not objDatei Is Nothing And Right(objDatei.Name, 4) = ".jpg" Then

ab.

Die Ergänzung And Right(objDatei.Name, 4) = “.jpg” führt zu der Einschränkung, dass nur Dateien mit der Endung “.jpg” in Excel geschrieben werden. Möchten Sie alle Dateinamen außer einer bestimmten Endung in Excel schreiben, fügen Sie noch den Befehl “Not” hinzu. And Not Right(objDatei.Name, 4) = “.jpg”

Das hier vorgestellte Makro liest nur die Dateinamen des aktuellen Ordners aus. Die Namen von Unterordnern und darin liegender Dateien werden nicht berücksichtigt. Die Dateien von Unterordnern können selbstverständlich grds. auch berücksichtigt werden. In diesem Fall ist dann jedoch eine etwas umfangreichere Änderung am VBA Quellcode erforderlich.

Excel Mustermappe:

Dateinamen in Excel auslesendateien_auflisten.xlsm

 
Gefällt Ihnen der Beitrag?

3 Gedanken zu “Dateinamen eines Verzeichnisses mit VBA auslesen und in Excel schreiben

  1. Hallo,
    ich möchte statt Endung “.jpg” ein TextBox haben (zum Beispiel “textbox1”) In TextBox werde ich der Name eintippen, danach folgt die Suche. Ich suche immer nach verschiedene Dateien, meistens sind PDF.
    VG

    • @Ilario: Dazu benötigen Sie eine zusätzliche Variable in der Sie den Wert aus einer Inputbox speichern und dann in der If-Bedingungen übergeben.

      zusätzlich also diese beiden Zeilen:

      Dim strDateiendung As String
      strDateiendung = InputBox(“Dateiendung eingeben:”)

      und zudem diese Zeile anpassen:

      If Not objDatei Is Nothing And Right(objDatei.Name, 4) = strDateiendung Then

Schreibe einen Kommentar