Kaip naudojant VBA (Excel makrokomandą) gauti failų, įskaitant pakatalogius, ir aplankų sąrašą.


Paskelbimo data:2022 m. liepos 12 d.



INFOMARTION > Kaip naudojant VBA (Excel makrokomandą) gauti failų, įskaitant pakatalogius, ir aplankų sąrašą.

Apžvalga.

Norėčiau aprašyti, kaip naudojant VBA ("Excel" makrokomandą) gauti failų ir aplankų sąrašą, įskaitant pakatalogius. Straipsnis skirtas žmonėms, norintiems užprogramuoti šias užduotis

  • Noriu gauti visų aplanke esančių failų ar aplankų sąrašą su visais jų keliais.
  • Norite atlikti aplanke esančių failų ar aplankų apdorojimą ciklu.

Turinys

  1. Programavimo metodas
  2. Kodas Aprašymas.
  3. santrauka

1. Programavimo metodas

Toliau pateikiami programavimo pavyzdžiai.

Kadangi jis sukurtas funkcijoje Function, norėčiau, kad jis būtų nukopijuotas toks, koks yra, ir kad metodo iškvietimai būtų atliekami iš 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

Jei norite jį naudoti, kaip argumentus pateikite šiuos įrašus.

  • filePath・・・katalogas. Pavyzdys.)C:\Users\user\Desktop\test
  • kind・・・Perduoti true, false. Jei True, grąžinamas failų sąrašas. Jei false, grąžinamas aplankų sąrašas.
  • list・・・Rezultatams saugoti naudojama kolekcija. Toliau pateikiamas įgyvendinimo pavyzdys.

Toliau pateikiamas faktinio funkcijos iškvietimo įgyvendinimo pavyzdys.

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

Iškvietus getFolderOrFile, failų sąrašas arba aplankų sąrašas bus įrašytas į sąrašą. Įgyvendinimo pavyzdys yra "False", todėl aplankų sąrašas išsaugomas.

Procesą, kurį norite atlikti, aprašykite "TODO" skirsnyje, esančiame "For" sakinyje. ITEM gali būti traktuojamas kaip String kintamasis.

Nuorodos šaltinis - tai įsigyto sąrašo nustatymo į A1 procesas "Excel" programoje. (Procesas pakartotinai perrašo tą pačią ląstelę.)

2. Kodas Aprašymas.

Tai yra sistemos naudojimo instrukcijų pabaiga, po kurios pateikiamas kodo paaiškinimas.

Išsamią informaciją galima pamatyti kode, tačiau svarbiausia yra tolesnis getFolderOrFile metodo getFolderOrFile iškvietimas.

Atliekant aplankų paiešką, procesas toliau kartojamas kviečiant aplankų paieškos procesą, kuris yra visų aplankų paieškos mechanizmas.

Skambindamas savo metodui, jis pakartotinai kviečia savo metodą tol, kol aplankas randamas, ieškodamas visų aplankų.

3. santrauka

Jei reikia pagalbos, kaip naudojant VBA (Excel makrokomandas) gauti failų ir aplankų, įskaitant pakatalogius, sąrašą, žr. šį skyrių.

Dėkojame, kad žiūrėjote iki pabaigos.