Auflisten von Dateien in einem Ordner mit VBA in Microsoft Excel

Inhaltsverzeichnis

In diesem Artikel erstellen wir ein Makro, um alle Dateien im Ordner aufzulisten.

Beim Ausführen des Makros wird der Dateiname zusammen mit dem Dateipfad ab Zelle A17 angezeigt.

Logikerklärung

In diesem Artikel haben wir zwei Makros erstellt, „subfolder_files“ und „getting_filelist_in_folder“.
Das Makro "subfolder_files" nimmt den Ordnerpfad und den booleschen Wert als Eingaben und gibt den Dateinamen innerhalb des Ordners zurück.

„getting_filelist_in_folder“ wird verwendet, um das Makro „subfolder_files“ aufzurufen. Es stellt den Ordnerpfadwert für das Makro bereit, wobei der boolesche Wert auf 'true' gesetzt ist. Wenn Dateinamen innerhalb der Unterordner erforderlich sind, weisen wir außerdem den booleschen Wert 'true' zu.

Codeerklärung

folder_path = Sheet1.TextBox1.Value
Der obige Code wird verwendet, um den Zeichenfolgenwert aus dem Textfeld zu extrahieren.

Call subfolder_files(folder_path, True)
Der obige Code wird verwendet, um das Makro „subfolder_files“ aufzurufen. Es weist den Ordnerpfad zu und setzt die Eigenschaft „include_subfolder“ auf true.

Set fso = CreateObject("scripting.filesystemobject")
Der obige Code wird verwendet, um ein Objekt des Dateisystems zu erstellen.

Unterordner1 setzen = fso.getfolder(folder_path)
Der obige Code wird verwendet, um das Objekt des definierten Ordners zu erstellen.

Für jeden Ordner1 In Unterordner1.Unterordner
Call subfolder_files(folder1, True)
Nächste
Der obige Code wird verwendet, um alle Unterordner innerhalb des Hauptordners zu durchsuchen.

Dir(Ordnerpfad1 & "*.xlsx")
Der obige Code wird verwendet, um den Excel-Dateinamen zu erhalten.

Während Dateiname ""
count1 = count1 + 1
ReDim Preserve filearray(1 zum zählen1)
filearray(count1) = Dateiname
Dateiname = Dir()
Wende

Der obige Code wird verwendet, um ein Array zu erstellen, das aus allen im Ordner vorhandenen Dateinamen besteht.

For i = 1 To UBound(filearray)
Zellen (letzte Zeile, 1).Wert = Ordnerpfad1 & Dateiarray (i)
letzte Reihe = letzte Reihe + 1
Nächste

Der obige Code wird verwendet, um der Arbeitsmappe einen Dateinamen innerhalb des Arrays zuzuweisen.

Bitte folgen Sie unten für den Code

 Option Explicit Sub subfolder_files(folderpath1 As Variant, Optional include_subfolder As Boolean) 'Prüfen, ob Unterordner eingeschlossen werden sollen oder nicht If include_subfolder Then 'Variablen deklarieren Dim filename, filearray() As String Dim lastrow, count1, i As Integer 'Überprüfen, ob der Ordnerpfad enthält Backslash als letztes Zeichen If Right(folderpath1, 1) "\" Then folderpath1 = folderpath1 & "\" End If 'Erhalte den Dateinamen der ersten Datei im definierten Ordnerpfad filename = Dir(folderpath1 & "*.xlsx") ' Abrufen der Zeilennummer der letzten Zelle lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1 count1 = 0 'Durchlaufen aller Dateien im Ordner Während Dateiname "" count1 = count1 + 1 ReDim Preserve filearray(1 To count1) filearray( count1) = filename filename = Dir() Wend On Error GoTo last 'Hinzufügen des Dateinamens zur Arbeitsmappe For i = 1 To UBound(filearray) Cells(lastrow, 1).Value = folderpath1 & filearray(i) lastrow = lastrow + 1 Next End If last: End Sub Sub Getting_filelist_in_folder () 'Variablen deklarieren Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object 'Pfad des Ordners folder_path = Sheet1.TextBox1.Value 'Überprüfen, ob der Ordnerpfad Backslash als letztes Zeichen enthält If Right(folder_path, 1) " \" Then folder_path = folder_path & "\" End If 'Calling subfolder_files macro Call subfolder_files(folder_path, True) 'Objekt des Dateisystemobjekts erstellen Set fso = CreateObject("scripting.filesystemobject") Set subfolder1 = fso.getfolder(folder_path) 'Schleife durch jeden Unterordner für jeden Ordner1 In Unterordner1.Unterordner Call subfolder_files(folder1, True) Next End Sub 

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.

Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave