Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien in Ordner auflisten

Dateien in Ordner auflisten
07.12.2015 14:59:47
Lukas
Hallo zusammen,
ich verwende derzeit folgendes Makro um alle Dateinamen in einem Excel-Sheet aufzulisten (um im Anschluss alle nacheinander einzulesen).

Dim verz As String
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim zeile As Integer
verz = Sheets("Eingaben").Cells(14, 4)
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder(verz)
Set fdateien = fVerz.files
zeile = 0
For Each fDatei In fdateien
If InStr(fDatei, "") > 0 Then
zeile = zeile + 1
Sheets("Inhalt Tagesordner").Cells(zeile, 1) = fDatei.Name
End If
Next fDatei

Das ganze funktioniert zwar, dauert aber sehr lange (sind etwa 200 - 500 Dateien im Ordner). Gibt es eine schnellere Möglichkeit alle Dateien eines Ordners in Excel aufzulisten?
Vielen Dank und viele Grüße,
Lukas

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien in Ordner auflisten
07.12.2015 15:22:05
Rudi
Hallo,
teste mal:
Sub aaa()
Dim verz As String
Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fDateien As Object
Dim objFiles As Object
verz = Sheets("Eingaben").Cells(14, 4)
Set objFiles = CreateObject("Scripting.Dictionary")
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder(verz)
Set fDateien = fVerz.Files
For Each fDatei In fDateien
If InStr(fDatei, "") > 0 Then
objFiles(fDatei.Name) = 0
End If
Next fDatei
Sheets("Inhalt Tagesordner").Cells(1, 1).Resize(objFiles.Count) = WorksheetFunction.Transpose( _
objFiles.keys)
End Sub
Gruß
Rudi

Anzeige
AW: Dateien in Ordner auflisten
07.12.2015 17:43:58
Lukas
Funktioniert klasse, vielen Dank!
Schöne Grüße,
Lukas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateien in Ordner auflisten mit Excel VBA


Schritt-für-Schritt-Anleitung

Um alle Dateien eines Ordners in Excel aufzulisten, kannst Du ein VBA-Makro verwenden. Folge diesen Schritten:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub DateienInOrdnerAuflisten()
       Dim verz As String
       Dim fs As Object
       Dim fVerz As Object
       Dim fDatei As Object
       Dim objFiles As Object
    
       verz = Sheets("Eingaben").Cells(14, 4) ' Pfad zum Ordner
       Set objFiles = CreateObject("Scripting.Dictionary")
       Set fs = CreateObject("Scripting.FileSystemObject")
       Set fVerz = fs.GetFolder(verz)
       Set fDateien = fVerz.Files
    
       For Each fDatei In fDateien
           objFiles(fDatei.Name) = 0
       Next fDatei
    
       Sheets("Inhalt Tagesordner").Cells(1, 1).Resize(objFiles.Count) = WorksheetFunction.Transpose(objFiles.keys)
    End Sub
  4. Ändere den Wert in Sheets("Eingaben").Cells(14, 4) auf die Zelle, die den Pfad Deines Zielordners enthält.

  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus, um alle Dateinamen im angegebenen Arbeitsblatt aufzulisten.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler: 91 – Objektvariable oder With-Blockvariable nicht festgelegt."

    • Lösung: Überprüfe, ob der Pfad zum Ordner korrekt ist und der Ordner existiert.
  • Fehler: "Das Arbeitsblatt kann nicht gefunden werden."

    • Lösung: Stelle sicher, dass die Arbeitsblätter "Eingaben" und "Inhalt Tagesordner" in Deiner Excel-Datei vorhanden sind.

Alternative Methoden

Eine alternative Methode, um den Ordnerinhalt in Excel aufzulisten, ist die Verwendung der Dir-Funktion:

Sub DateinamenMitDirAuflisten()
    Dim verz As String
    Dim datei As String
    Dim zeile As Integer

    verz = Sheets("Eingaben").Cells(14, 4) ' Pfad zum Ordner
    datei = Dir(verz & "\*.*")
    zeile = 1

    Do While datei <> ""
        Sheets("Inhalt Tagesordner").Cells(zeile, 1).Value = datei
        datei = Dir
        zeile = zeile + 1
    Loop
End Sub

Diese Methode kann in manchen Fällen schneller sein, da sie nicht die gesamte FileSystemObject-Bibliothek verwendet.


Praktische Beispiele

Wenn Du die Excel-Ordnerstruktur auflisten möchtest, kannst Du die Unterordner ebenfalls berücksichtigen. Hier ist ein Beispiel:

Sub OrdnerStrukturAuflisten()
    Dim verz As String
    verz = Sheets("Eingaben").Cells(14, 4)
    Call Auflisten(verz, 1)
End Sub

Sub Auflisten(ByVal pfad As String, ByVal tiefe As Integer)
    Dim fs As Object
    Dim fVerz As Object
    Dim fDatei As Object
    Dim fUnterverz As Object
    Dim zeile As Integer

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fVerz = fs.GetFolder(pfad)
    zeile = Sheets("Inhalt Tagesordner").Cells(Rows.Count, 1).End(xlUp).Row + 1

    For Each fDatei In fVerz.Files
        Sheets("Inhalt Tagesordner").Cells(zeile, 1).Value = fDatei.Path
        zeile = zeile + 1
    Next fDatei

    For Each fUnterverz In fVerz.SubFolders
        Call Auflisten(fUnterverz.Path, tiefe + 1)
    Next fUnterverz
End Sub

Dieses Skript listet alle Dateien und Unterordner im angegebenen Pfad auf.


Tipps für Profis

  • Nutze die Scripting.Dictionary-Klasse, um doppelte Dateinamen zu vermeiden, falls die gleichen Namen in verschiedenen Unterordnern vorkommen.
  • Du kannst das Ergebnis in eine Textdatei exportieren, indem Du die Open- und Print #-Befehle verwendest.
Open "C:\deinPfad\dateien.txt" For Output As #1
For Each fDatei In fDateien
    Print #1, fDatei.Name
Next fDatei
Close #1

FAQ: Häufige Fragen

1. Wie kann ich nur bestimmte Dateitypen auflisten? Du kannst die If-Bedingung im Code anpassen, um nur Dateien mit bestimmten Endungen aufzulisten, z.B. .xlsx:

If Right(fDatei.Name, 5) = ".xlsx" Then

2. Funktioniert das auch in Excel 2013? Ja, die gezeigten VBA-Skripte sind mit Excel 2010 und neueren Versionen kompatibel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige