Note: The other languages of the website are Google-translated. Back to English

Wie liste ich alle Dateien in Ordnern und Unterordnern in einem Arbeitsblatt auf?

Haben Sie jemals versucht, alle Dateinamen aus einem Ordner in einem Arbeitsblatt aufzulisten, einschließlich der Dateien in den Unterordnern? Tatsächlich gibt es für uns keine direkte Möglichkeit, die Dateinamen eines Ordners und seines Unterordners in Excel aufzulisten. Heute werde ich jedoch einige schnelle Tricks vorstellen, um diesen Job zu lösen.

Listen Sie alle Dateinamen in Ordner und Unterordner mit VBA-Code auf

Listen Sie mit Kutools for Excel alle Dateinamen in Ordner und Unterordner schnell und einfach auf


Normalerweise verfügt Excel über keine integrierte Funktion, um diese Aufgabe zu lösen. Sie können jedoch den folgenden VBA-Code anwenden, um dieses Problem zu beheben.

1. Aktivieren Sie ein neues Arbeitsblatt, in dem die Dateinamen aufgelistet sind.

2. Halten Sie die Taste gedrückt ALT + F11 Tasten in Excel, und es öffnet sich die Microsoft Visual Basic für Applikationen Fenster.

3. Klicken Sie Insert > Modulund fügen Sie den folgenden Code in das Feld ein Modulfenster.

VBA-Code: Listet alle Dateinamen in Ordner und Unterordner auf

Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. Drücken Sie nach dem Einfügen des Codes in das Modul F5 Schlüssel zum Ausführen dieses Codes und a Makros Das Dialogfeld wird angezeigt. Wählen Sie die Option aus Hauptliste Makroname, und klicken Sie dann auf Run Schaltfläche, siehe Screenshot:

Dokumentlistendateien im Ordner-Unterordner 1

5. Und in der Entdecken Wählen Sie im Fenster den Ordner aus, in dem alle Dateinamen einschließlich der Unterordner aufgelistet werden sollen. Siehe Screenshot:

Dokumentlistendateien im Ordner-Unterordner 2

6. Nachdem Sie den Ordner angegeben haben, klicken Sie auf OK Klicken Sie auf die Schaltfläche, und alle Dateinamen im Ordner und seinen Unterordnern wurden im aktuellen Arbeitsblatt aus Zelle A2 aufgelistet. Siehe Screenshots:

Dokumentlistendateien im Ordner-Unterordner 3
1
Dokumentlistendateien im Ordner-Unterordner 4

Mit dem obigen Code können Sie nur die Dateinamen auflisten. Manchmal müssen Sie andere Attribute auflisten, z. B. Dateigröße, Dateityp, Erstellungszeit, Ordner usw. Kutools for Excel enthält eine nützliche Funktion - DateinamenlisteMit dieser Funktion können Sie schnell alle oder bestimmte Arten von Dateinamen in einem Ordner und seinen Unterordnern auflisten.

Kutools for Excel : Mit mehr als 300 praktischen Excel-Add-Ins können Sie diese innerhalb von 30 Tagen ohne Einschränkung testen.

Nach der Installation Kutools for ExcelBitte machen Sie folgende Schritte:

1. Klicken Sie Unternehmen > Import Export > Dateinamenliste, siehe Screenshot:

2. In dem Dateinamenliste Führen Sie im Dialogfeld die folgenden Vorgänge aus:

A: Klicken Sie auf Dokumentlistendateien im Ordner-Unterordner 7Klicken Sie auf die Schaltfläche, um den Ordner auszuwählen, in dem Sie die Dateinamen auflisten möchten.

B: Geben Sie den Dateityp an, den Sie in der Liste auflisten möchten Dateityp Sektion;

C: Wählen Sie eine Dateigrößeneinheit aus, die Sie anzeigen möchten Dateigrößeneinheit Abschnitt.

Hinweis: Um die Dateinamen aus dem Unterordner aufzulisten, überprüfen Sie bitte Dateien in Unterverzeichnisse aufnehmenkönnen Sie auch die überprüfen Schließen Sie versteckte Dateien und Ordner ein wie du es brauchst. Wenn Sie überprüfen Erstellen Sie Hyperlinks Mit dieser Option werden Hyperlinks für jeden Dateinamen und Ordner erstellt.

Jetzt herunterladen und kostenlos testen!

3. Dann klick OK Auf der Schaltfläche werden alle im ausgewählten Ordner und seinen Unterordnern enthaltenen Dateien mit den folgenden Attributen in einem neuen Arbeitsblatt angezeigt. Siehe Screenshot:

Dokumentlistendateien im Ordner-Unterordner 8

Klicken Sie hier, um weitere Informationen zu diesem Dienstprogramm zur Dateinamenliste zu erhalten.

Laden Sie Kutools for Excel jetzt herunter und testen Sie es kostenlos!


Kutools for Excel: Mit mehr als 300 praktischen Excel-Add-Ins können Sie es innerhalb von 30 Tagen ohne Einschränkung testen. Jetzt herunterladen und kostenlos testen!

Die besten Tools für die Office-Produktivität

Kutools for Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2021 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. 30-tägige kostenlose Testversion mit allen Funktionen. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (20)
Noch keine Bewertungen. Bewerten Sie als Erster!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guter Artikel Danke :D
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebes, vielen Dank für dieses wunderbare Dienstprogramm .....!!! Anil kumar
Dieser Kommentar wurde vom Moderator auf der Website minimiert
WIE KANN DIESE ABFRAGE ARBEITEN, UM DIE DATEINAMEN ZU ERHALTEN, DIE VON B2-Zelle anstelle von A2 AUFGEFÜHRT WERDEN?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, Satish,
Der folgende Code kann Ihnen helfen, die Dateinamen in jede ausgewählte Zelle zu setzen, bitte versuchen Sie es:

Unter Hauptliste()
On Error Resume Next
Set xRg = Application.InputBox("Bitte wählen Sie eine Zelle aus, um die Dateinamen zu setzen:", "KuTools For Excel", Selection.Address, , , , , 8)
Wenn xRg nichts ist, dann beenden Sie Sub
Setze xRg = xRg(1)
Ordner festlegen = Application.FileDialog(msoFileDialogFolderPicker)
If Folder.Show <> -1 Then Exit Sub
xDir = Ordner.SelectedItems(1)
Aufruf ListFilesInFolder(xRg, xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xRg As Range, ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject als Objekt
xFolder als Objekt dimmen
Dim xSubFolder als Objekt
Dim xFile As Object
Dim rowIndex As Long
Setze xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setze xFolder = xFileSystemObject.GetFolder(xFolderName)
Zeilenindex = 1
Für jede xFile in xFolder.Files
xRg.Formel = xDatei.Name
Setze xRg = xRg.Offset(rowIndex)
Zeilenindex = 1
Nächste xDatei
Wenn xIsSubfolders Then
Für jeden xSubFolder in xFolder.SubFolders
ListFilesInFolder xRg, xSubFolder.Path, True
Nächster xUnterordner
End If
Setzen Sie xFile = Nothing
Setzen Sie xFolder = nichts
Setzen Sie xFileSystemObject = Nothing
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Großartig!!! liebe es, danke
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Nicht sicher ... aber berücksichtigt es lange Ordner. Ich habe einen ähnlichen Code geschrieben und es schlägt fehl, wenn der Ordner-/Dateipfad 256 Zeichen überschreitet? Gedanken bitte?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Vielen Dank für den nützlichen Artikel!
Wie kann ich die Liste automatisch aktualisieren und die Änderungen erkennen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Dies hat mir geholfen, meinen Code zu konvertieren, um den rekursiven Aufruf zu erhalten, aber ich frage mich, wie Sie Objekte verwenden. Ich ziehe es vor, meine Objekte als das zu definieren, was sie sind, seien es Arbeitsmappen, Arbeitsblätter oder Dateisystemobjekte. (Dim wbDest als excel.workbook, dim wsDest als excel.worksheet zum Beispiel. Auf diese Weise muss ich mir nie Gedanken darüber machen, welches das aktive Blatt ist.

Ich habe mich auch über die Verwendung von .show - if.show <>-1 gewundert und kann nicht umhin zu glauben, dass es für die Leute einfacher zu verstehen wäre, wenn Sie stattdessen if.show = false verwenden würden.

Und in Bezug auf das Schreiben an das Ziel hatte ich das Gefühl, dass die Verwendung von Zellen und Formeln ein langer Weg zu sein schien

Also habe ich in meinem Code zum Beispiel
wsDest.Range("B" & CurRow) = fil.name
(CurRow = aktuelle Zeile)

Ich kritisiere nicht, frage mich nur, ob Sie es aus irgendeinem anderen Grund als Ihrer persönlichen Vorliebe so machen. - Immer bereit zu lernen


Aber ansonsten danke für die Hilfe
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Vielen Dank für diesen Code. Er hat mir bei einer Anfrage geholfen. Ich kann diese Ergebnisse jetzt zur weiteren Transformation in Access importieren.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Sub "GetFileOwner()" im obigen Code wird nicht verwendet.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Jumpjack,
Der obige Code funktioniert gut in meinem Excel, welche Excel-Version verwenden Sie?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Extremamente elegante este código!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Was war der Zweck des Parameters ByVal xIsSubfolders As Boolean?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Mein VBA sagt, dass der Variablenordner nicht definiert ist. Weiß jemand warum das so ist?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wirklich neu in VBA. Wie verwende ich den obigen Code, habe aber den Dateipfad eingebaut, damit ich nicht jedes Mal danach suchen muss?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hey, wenn ich also nur eine Erweiterung aus der ganzen Liste extrahieren muss, wo soll ich dann Änderungen vornehmen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Funktioniert es auch auf MAC?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe Ihren Code so geändert, dass er wiederverwendet und der Ordnerdialog wiederholt ausgeführt wird, bis Sie auf Abbrechen klicken. Leider werden einige Fehler generiert.1. Wenn Unterordner in einen ausgewählten Ordner einbezogen werden, wird der nächste ausgewählte Ordner aus der numerischen Reihenfolge.2. Wenn Unterordner in einen ausgewählten Ordner einbezogen werden, muss die Schaltfläche Abbrechen wiederholt und wiederholt werden, je nachdem, wie viele Ordner Sie hinzugefügt haben.
Code:
Unter Hauptliste()
'Updateby Extendoffice
Ordner festlegen = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = Ordner.SelectedItems(1)
Rufen Sie ListFilesInFolder(xDir, True) auf
End SubSub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject als Objekt
xFolder als Objekt dimmen
Dim xSubFolder als Objekt
Dim xFile As Object
Dim rowIndex As Long
Setze xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setze xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
Für jede xFile in xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
ZeilenIndex = ZeilenIndex + 1
Nächste xDatei
Wenn xIsSubfolders Then
Für jeden xSubFolder in xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Nächster xUnterordner
End If
Setzen Sie xFile = Nothing
Setzen Sie xFolder = nichts
Setzen Sie xFileSystemObject = Nothing
End Sub

irgendwelche Ideen ?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Entschuldigung ... Ich habe Ihnen den falschen Code (unten) gegeben, hier ist der Code, den ich geändert habe.
Code:
Unter Hauptliste()
On Error Resume Next
Dim xFileSystemObject als Objekt
xFolder als Objekt dimmen
Dim xSubFolder als Objekt
Dim xFile As Object
Dim rowIndex As Long
Dim-Antwort als Variante
Antwort = Falsch
Mit Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Ordner auswählen"
.AllowMultiSelect = Falsch
Ordner festlegen = Application.FileDialog(msoFileDialogFolderPicker)
Wenn folder.Show = -1 Dann
xDir = Ordner.SelectedItems(1)
sonst
Exit Sub
End If
Ende mit

Rufen Sie ListFilesInFolder(xDir, True) auf
End Sub

Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Setze xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Setze xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Fügen Sie dem Arbeitsblatt ein Leerzeichen und dann den Ordnernamen hinzu
ZeilenIndex = ZeilenIndex + 1
Mit Application.ActiveSheet.Cells (rowIndex, 1)
.Wert = xOrdner.Name
.Schriftgröße = 12
.Font.FontStyle = "Fett Kursiv"
Ende mit
ZeilenIndex = ZeilenIndex + 1

Für jede xFile in xFolder.Files
Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
ZeilenIndex = ZeilenIndex + 1
Nächste xDatei
Wenn xIsSubfolders Then
Für jeden xSubFolder in xFolder.SubFolders
ListFilesInFolder xSubFolder.Path, True
Nächster xUnterordner
ZeilenIndex = ZeilenIndex + 1
End If

Setzen Sie xFile = Nothing
Setzen Sie xFolder = nichts
Setzen Sie xFileSystemObject = Nothing

Hauptliste aufrufen
End Sub


Dieser Kommentar wurde vom Moderator auf der Website minimiert
Gute Arbeit, genau das, was ich zu erstellen versuchte. Aber das ist 1000% besser.
Es sind noch keine Kommentare vorhanden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte

Folgen Sie uns

Copyright © 2009 - www.extendoffice.com. | Alle Rechte vorbehalten. Unterstützt von ExtendOffice. | Sitemap
Microsoft und das Office-Logo sind Marken oder eingetragene Marken der Microsoft Corporation in den USA und / oder anderen Ländern.
Geschützt durch Sectigo SSL