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

ArrowMain

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

ArrowOutput

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]