Seznam datotek in map rekurzivno z Excel VBA
Datum objave:
Osveženo:
Tehnični članki > Seznam datotek in map rekurzivno z Excel VBA
Status in varna uporaba 2026
Sklep: Rekurzivno obiščite vsako mapo, oddajajte datoteke, ki jih potrebujete, in prenesite vse otroške mape nazaj v isti postopek. Dodajte izrecno ravnanje z napakami in politiko za križišča, simbolične povezave, skrite mape in poti, ki so zagotovljene z dostopom.
Kaj se boš naučil?
- Kako Datotečni sistem Predmet razkriva mape, podmape, datoteke, imena in poti.
- Kako rekurzija gradi popolno drevo in zakaj globoka ali ciklična drevesa potrebujejo zaščito.
- Kako napisati rezultate na delovni list brez počasnih operacij po celicah v velikem obsegu.
Za koga je to? Excel uporabniki inventarirajo nadzorovano Windows imeniško drevo.
Kontekst za leto 2026: Vzorec odraža avtorjev izvirni lokalni test. Potrdite dovoljenja in povezati vedenje na kopijo svoje strukture imenika, in menijo PowerShell ali namensko inventar orodje za zelo velike ali varnostno občutljiva drevesa.
Varnostna opomba: Ukazi in konfiguracijski primeri v prvotnem članku niso bili ponovno predvajani v trenutnem proizvodnem okolju. Pred uporabo preveri podprte različice, varnostne kopije, nadzor dostopa in povratne korake v ločenem preskusnem okolju.
Glavni uradni viri
Pregled.
Opisati želim, kako z uporabo VBA (makro programa Excel) pridobiti seznam datotek in seznam map, vključno s podmapami. Članek je namenjen ljudem, ki želijo programirati naslednje naloge
- Želim dobiti seznam vseh datotek ali map pod mapo z njihovimi polnimi potmi.
- V zanki želite obdelati datoteke ali mape pod mapo.
Kazalo vsebine
1. Metoda programiranja
V nadaljevanju so navedeni referenčni primeri programiranja.
Ker je ustvarjen v funkciji Function, bi ga rad prekopiral tako, kot je, in klical metode iz 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
Če ga želite uporabiti, kot argumente navedite naslednje.
- filePath: imenik. Primer.)C:\Users\user\Desktop\test
- kind: Pass true, false. Če je True, vrne seznam datotek. Če je false, vrne seznam map.
- list: Zbirka se uporablja za shranjevanje rezultatov. V nadaljevanju je prikazan primer izvajanja.
Primer izvajanja dejanskega klica funkcije je prikazan spodaj.
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
S klicem getFolderOrFile se seznam datotek ali seznam map shrani v seznam. Primer izvajanja je False, zato je seznam map shranjen.
Postopek, ki ga želite izvesti, opišite v razdelku "TODO" v stavku For. ITEM lahko obravnavamo kot spremenljivko String.
Referenčni vir je postopek nastavitve pridobljenega seznama na A1 v programu Excel. (Postopek večkrat prepiše isto celico.)
2. Opis kode.
To je konec navodil za uporabo sistema, ki jim sledi razlaga kode.
Podrobnosti si lahko ogledate v kodi, ključna točka pa je nadaljnji klic metode getFolderOrFile v metodi getFolderOrFile.
V postopku iskanja map se postopek nadaljuje s klicem postopka iskanja map, ki je mehanizem za iskanje vseh map.
S klicem lastne metode večkrat pokliče svojo metodo, dokler je mapa najdena, in preišče vse mape.
3. povzetek
Če potrebujete pomoč pri pridobivanju seznama datotek in seznama map, vključno s podmapami, z uporabo VBA (Excelovih makrov), glejte to poglavje.
Upamo, da je bila razlaga koristna.