Liste Dateien in einem Ordner mit VBA in Microsoft Excel
auf 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.
Logische Erklärung
In diesem Artikel haben wir zwei Makros erstellt, „subfolder_files“ und „Getting_filelist_in_folder“.
Das Makro „subfolder_files“ verwendet 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 ‚true‘ festgelegt ist. Wenn Dateinamen in den Unterordnern erforderlich sind, weisen wir den booleschen Wert ‚true‘ zu.
Code Erklärung
folder_path = Sheet1.TextBox1.Value Der obige Code wird verwendet, um den Zeichenfolgenwert aus dem Textfeld zu extrahieren.
Rufen Sie subfolder_files (folder_path, True)
auf Der obige Code wird verwendet, um das Makro „subfolder_files“ aufzurufen. Es weist den Ordnerpfad zu und setzt die Eigenschaft „include_subfolder“ auf „true“.
Setze fso = CreateObject („scripting.filesystemobject“)
Der obige Code wird verwendet, um ein Objekt des Dateisystems zu erstellen.
Setze subfolder1 = fso.getfolder (folder_path)
Der obige Code wird verwendet, um das Objekt des definierten Ordners zu erstellen.
Für jeden Ordner1 In subfolder1.subfolders Rufen Sie subfolder_files (folder1, True)
auf Weiter Der obige Code wird verwendet, um alle Unterordner im Hauptordner zu durchsuchen.
Dir (Ordnerpfad1 & „* .xlsx“)
Der obige Code wird verwendet, um den Excel-Dateinamen abzurufen.
Während Dateiname <> „“
count1 = count1 + 1 ReDim Filearray beibehalten (1 To count1)
filearray (count1) = Dateiname Dateiname = Dir ()
Wend Mit dem obigen Code wird ein Array erstellt, das aus allen im Ordner vorhandenen Dateinamen besteht.
Für i = 1 bis UBound (Dateirray)
Zellen (lastrow, 1) .Value = folderpath1 & filearray (i)
lastrow = lastrow + 1 Weiter Der obige Code wird verwendet, um der Arbeitsmappe den 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) 'Checking whether to include subfolder or not If include_subfolder Then 'Declaring variables Dim filename, filearray() As String Dim lastrow, count1, i As Integer 'Checking whether folder path contain backslash as last character If Right(folderpath1, 1) <> "\" Then folderpath1 = folderpath1 & "\" End If 'Getting the filename of the first file in the defined folder path filename = Dir(folderpath1 & "*.xlsx") 'Getting the row number of last cell lastrow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row + 1 count1 = 0 'Looping through all the files in the folder While filename <> "" count1 = count1 + 1 ReDim Preserve filearray(1 To count1) filearray(count1) = filename filename = Dir() Wend On Error GoTo last 'Adding file name to workbook 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() 'Declaring variables Dim folder_path As String Dim fso As Object, folder1, subfolder1 As Object 'Getting path of the folder folder_path = Sheet1.TextBox1.Value 'Checking whether folder path contain backslash as last character If Right(folder_path, 1) <> "\" Then folder_path = folder_path & "\" End If 'Calling subfolder_files macro Call subfolder_files(folder_path, True) 'Creating object of File system object Set fso = CreateObject("scripting.filesystemobject") Set subfolder1 = fso.getfolder(folder_path) 'Looping through each subfolder For Each folder1 In subfolder1.subfolders Call subfolder_files(folder1, True) Next End Sub
Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]