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.

Sisukord

  1. Programmeerimismeetod
  2. Kood Kirjeldus.
  3. kokkuvõte

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.