Wie man eine Liste von Dateien, einschließlich Unterordnern, und eine Liste von Ordnern mit VBA (Excel-Makro) erhält.


Datum der Veröffentlichung:12. Juli 2022.



INFOMARTION > Wie man eine Liste von Dateien, einschließlich Unterordnern, und eine Liste von Ordnern mit VBA (Excel-Makro) erhält.

Überblick.

Ich möchte beschreiben, wie man mit VBA (Excel-Makro) eine Liste von Dateien und eine Liste von Ordnern, einschließlich Unterordnern, erhält. Dieser Artikel ist für Personen bestimmt, die die folgenden Aufgaben programmieren wollen

  • Ich möchte eine Liste aller Dateien oder Ordner unter einem Ordner mit ihren vollständigen Pfaden erhalten.
  • Sie möchten die Verarbeitung in einer Schleife für Dateien oder Ordner unter einem Ordner durchführen.

Inhaltsübersicht

  1. Programmiermethode
  2. Code Beschreibung.
  3. Zusammenfassung

1. Programmiermethode

Nachstehend finden Sie Beispiele für die Programmierung.

Da es in Function erstellt wird, würde ich es gerne so kopieren, wie es ist, und die Methodenaufrufe von Sub ausführen lassen.

'Parameter Examples
'## filePath      C:\Users\user\Desktop\test\
'## kind          false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
 
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
  filePath = Left(filePath, Len(filePath) - 1)
End If
 
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
  MsgBox "File does not exist!"
  Exit Function
End If
 
If kind Then
  Dim buf As String
  buf = Dir(filePath & "\*.*")
  Do While buf <> ""
    list.Add filePath & "\" & buf
    buf = Dir()
  Loop
Else
  list.Add filePath
End If
 
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
  For Each folder In .GetFolder(filePath).SubFolders
    getFolderOrFile folder.Path, kind, list
  Next folder
End With
 
End Function

Um es zu verwenden, geben Sie die folgenden Argumente an.

  • filePath・・・Verzeichnis. Beispiel.)C:\Users\user\Desktop\test
  • kind・・・Pass true, false. Bei True wird eine Liste von Dateien zurückgegeben. Wenn false, wird eine Liste von Ordnern zurückgegeben.
  • list・・・Die Sammlung wird zur Speicherung der Ergebnisse verwendet. Im Folgenden wird ein Beispiel für eine Implementierung gegeben.

Ein Beispiel für die Implementierung eines aktuellen Funktionsaufrufs ist unten dargestellt.

Sub test()
 
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
  '------TODO------
  ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
 
End Sub

Der Aufruf von getFolderOrFile speichert eine Liste von Dateien oder eine Liste von Ordnern in list. Das Umsetzungsbeispiel ist False, also wird die Liste der Ordner gespeichert.

Beschreiben Sie den Prozess, den Sie durchführen möchten, im Abschnitt "TODO" in der For-Anweisung. ITEM kann wie eine String-Variable behandelt werden.

Die Referenzquelle ist der Prozess der Einstellung der erfassten Liste auf A1 in Excel. (Der Prozess überschreibt wiederholt dieselbe Zelle.)

2. Code Beschreibung.

Dies ist das Ende der Anleitung zur Verwendung des Systems, gefolgt von einer Erläuterung des Codes.

Die Details sind im Code zu sehen, aber der wichtigste Punkt ist der weitere Aufruf von getFolderOrFile in der getFolderOrFile-Methode.

Bei der Suche nach Ordnern wird der Prozess weiter wiederholt, indem der Prozess der Suche nach Ordnern aufgerufen wird, der ein Mechanismus zur Suche nach allen Ordnern ist.

Indem er seine eigene Methode aufruft, ruft er wiederholt seine eigene Methode auf, solange der Ordner gefunden wird, und durchsucht alle Ordner.

3. Zusammenfassung

Wenn Sie Hilfe benötigen, um mit VBA (Excel-Makros) eine Liste von Dateien und eine Liste von Ordnern, einschließlich Unterordnern, zu erhalten, lesen Sie bitte diesen Abschnitt.

Danke, dass Sie bis zum Ende zugesehen haben.