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
  2. Kode Beskrivelse.
  3. resumé

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.




■INFORMATION

Klik her for at gå til den øverste side med oplysninger.


■PROFILE

Klik her for at se en profil.


■Kontaktoplysninger.

For forespørgsler om artiklen kan du kontakte os her.