Loetle failid ja kaustad rekursiivselt Excel VBA abil
Avaldatud:
Uuendatud:
Artiklid › Loetle failid ja kaustad rekursiivselt Excel VBA abil
Olukord 2026. aastal ja ohutu kasutamine
Järeldus: külastage iga kausta rekursiivselt, väljastage vajalikud failid ja suunake kõik alamkaustad tagasi samasse protseduuri. Lisage selgesõnaline veakäsitlus ja eeskirjad ristmike, sümboolsete linkide, peidetud kaustade ja juurdepääsupiiranguga teede jaoks.
Mida õpid
- Kuidas FileSystemObject paljastab kaustad, alamkaustad, failid, nimed ja teed.
- Kuidas loob rekursioon tervikliku puu ja miks vajavad sügavad või tsüklilised puud kaitsemeetmeid.
- Kuidas kirjutada tulemusi töölehel ilma aeglaste suurte lahtrioperatsioonideta.
Kellele artikkel on mõeldud: Exceli kasutajad, kes inventeerivad kontrollitud Windowsi kataloogipuud.
Olukord 2026. aastal: näidis peegeldab autori algset kohalikku testi. Kontrollige oma kataloogistruktuuri koopia õigusi ja linkide käitumist ning kaaluge PowerShelli või spetsiaalset inventuuritööriista väga suurte või turvatundlike puude jaoks.
Ohutusmärkus: Algse artikli käske ja seadistusnäiteid ei ole tänapäevases tootmiskeskkonnas uuesti käivitatud. Enne rakendamist kontrolli toetatud versioone, tee varukoopia ja valmista eraldi testkeskkonnas ette tagasipööramise plaan.
Ametlikud allikad
Ülevaade
Soovin kirjeldada, kuidas saada VBA (Exceli makro) abil failide ja kaustade, sealhulgas alamkaustade loetelu. Artikkel on mõeldud inimestele, kes soovivad programmeerida järgmisi ülesandeid
- Ma tahan saada nimekirja kõigist kausta all olevatest failidest või kaustadest koos nende täieliku teekonnaga.
- Sa tahad teha töötlemist loopis failide või kaustade jaoks, mis asuvad ühe kausta all.
1. Programmeerimismeetod
Allpool on toodud programmeerimisnäited.
Kuna see on loodud funktsioonis Function, sooviksin, et see kopeeritaks üle sellisena, nagu see on, ja et meetodikutsed tehtaks Subist.
'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
Selle kasutamiseks andke argumendina üle järgmised argumendid.
- filePath···kataloogi. Näide).C:\Users\user\Desktop\test
- kind···Pass true, false. Kui True, tagastab failide nimekirja. Kui false, tagastab kaustade nimekirja.
- list···Kollektsiooni kasutatakse tulemuste salvestamiseks. Allpool on esitatud näide rakendamise kohta.
Allpool on esitatud näide tegeliku funktsioonikõne rakendamisest.
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
GetFolderOrFile'i kutsumine salvestab failide või kaustade nimekirja listis. Rakenduse näide on False, seega salvestatakse kaustade nimekiri.
Kirjeldage protsessi, mida soovite teha, For avalduse jaotises "TODO". ITEMi saab käsitleda String-muutujana.
Võrdlusallikas on Excelis omandatud loendi määramise protsess A1-le. (Protsessi käigus kirjutatakse sama lahter korduvalt üle).
2. Kood Kirjeldus.
Sellega lõpeb süsteemi kasutusjuhend, millele järgneb koodi selgitus.
Üksikasjad on näha koodis, kuid põhipunkt on edasine üleskutse getFolderOrFile meetodile getFolderOrFile.
Kaustade otsimise protsessis korratakse protsessi edasi, kutsudes üles kaustade otsimise protsessi, mis on kõigi kaustade otsimise mehhanism.
Kutsudes oma meetodit, kutsub ta korduvalt oma meetodit nii kaua, kuni kaust on leitud, otsides kõiki kaustu.
3. kokkuvõte
Kui vajate abi, kuidas saada failide ja kaustade, sealhulgas alamkaustade loetelu VBA (Exceli makrode) abil, vaadake seda jaotist.
Need on peamised sammud ja piirangud, mida tuleb arvestada.
■Artiklid
■Profiil
■Kontakt