Kuidas saada VBA (Exceli makro) abil failide, sealhulgas alamkaustade ja kaustade loetelu.
Avaldamise kuupäev:12. juuli 2022.
INFOMARTION > Kuidas saada VBA (Exceli makro) abil failide, sealhulgas alamkaustade ja kaustade loetelu.
Ü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.
Aitäh, et vaatasite kuni lõpuni.
■INFORMATION
Palun klõpsake siin, et minna INFORMATSIOONI pealehele.
■PROFILE
Palun klõpsake siin profiili jaoks.
■Kontaktandmed.
Artikliga seotud päringute korral võtke meiega ühendust siin.