Sådan får du en liste over filer, herunder undermapper, og en liste over mapper ved hjælp af VBA (Excel-makro).
Udgivelsesdato:12. juli 2022.
INFOMARTION > Sådan får du en liste over filer, herunder undermapper, og en liste over mapper ved hjælp af VBA (Excel-makro).
Oversigt.
Jeg vil gerne beskrive, hvordan du kan få en liste over filer og en liste over mapper, herunder undermapper, ved hjælp af VBA (Excel-makro). Artiklen er beregnet til personer, der ønsker at programmere følgende opgaver
- Jeg ønsker at få en liste over alle filer eller mapper under en mappe med deres fulde stier.
- Du vil udføre behandling i en sløjfe for filer eller mapper under en mappe.
Indholdsfortegnelse
1. Programmeringsmetode
Nedenfor er vist referenceeksempler på programmering.
Da den er oprettet i Function, vil jeg gerne have den kopieret over, som den er, og have metodekald foretaget fra Sub.
'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
For at bruge den skal du angive følgende som argumenter.
- filePath・・・mappe. Eksempel.)C:\Users\user\Desktop\test
- kind・・・Passer sandt, falsk. Hvis True, returnerer en liste over filer. Hvis falsk, returneres en liste over mapper.
- list・・・Samlingen bruges til at gemme resultaterne. Nedenfor er vist et eksempel på en implementering.
Nedenfor er vist et eksempel på en implementering af et faktisk funktionsopkald.
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
Ved at kalde getFolderOrFile gemmes en liste over filer eller en liste over mapper i listen. Implementeringseksemplet er False, så listen over mapper er gemt.
Beskriv den proces, du ønsker at udføre, i "TODO"-afsnittet i For-erklæringen. ITEM kan behandles som en String-variabel.
Referencekilden er processen med at indstille den erhvervede liste til A1 i Excel. (Processen overskriver gentagne gange den samme celle.)
2. Kode Beskrivelse.
Dette er slutningen af vejledningen om, hvordan systemet skal bruges, efterfulgt af en forklaring af koden.
Detaljerne kan ses i koden, men det vigtigste punkt er det yderligere kald til getFolderOrFile i getFolderOrFile-metoden.
I processen med at søge efter mapper gentages processen yderligere ved at kalde processen med at søge efter mapper, som er en mekanisme til at søge i alle mapper.
Ved at kalde sin egen metode kalder den gentagne gange sin egen metode, så længe mappen er fundet, og søger i alle mapper.
3. resumé
Hvis du har brug for hjælp til at få en liste over filer og en liste over mapper, herunder undermapper, ved hjælp af VBA (Excel-makroer), kan du læse dette afsnit.
Tak, fordi du kiggede med til slutningen.