Ako získať zoznam súborov vrátane podpriečinkov a zoznam priečinkov pomocou VBA (makro programu Excel).


Dátum vydania:12. júla 2022.



INFOMARTION > Ako získať zoznam súborov vrátane podpriečinkov a zoznam priečinkov pomocou VBA (makro programu Excel).

Prehľad.

Chcel by som popísať, ako získať zoznam súborov a zoznam priečinkov vrátane podpriečinkov pomocou VBA (makro Excelu). Článok je určený pre ľudí, ktorí chcú naprogramovať tieto úlohy

  • Chcem získať zoznam všetkých súborov alebo priečinkov v priečinku s ich úplnými cestami.
  • Chcete vykonať spracovanie v slučke pre súbory alebo priečinky v rámci priečinka.

Obsah

  1. Spôsob programovania
  2. Kód Popis.
  3. zhrnutie

1. Spôsob programovania

Referenčné príklady programovania sú uvedené nižšie.

Keďže je vytvorená vo funkcii Function, chcel by som ju skopírovať tak, ako je, a aby sa volania metód uskutočňovali zo 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

Ak ho chcete použiť, odovzdajte ako argumenty nasledujúce príkazy.

  • filePath・・・adresár. Príklad.)C:\Users\user\Desktop\test
  • kind・・・Odovzdať true, false. Ak je True, vráti zoznam súborov. Ak je false, vráti zoznam priečinkov.
  • list・・・Kolekcia sa používa na ukladanie výsledkov. Príklad implementácie je uvedený nižšie.

Príklad implementácie skutočného volania funkcie je uvedený nižšie.

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

Volanie getFolderOrFile uloží zoznam súborov alebo zoznam priečinkov do zoznamu. Príklad implementácie je False, takže zoznam priečinkov je uložený.

Proces, ktorý chcete vykonať, opíšte v časti "TODO" v príkaze For. ITEM možno považovať za premennú String.

Referenčný zdroj je proces nastavenia získaného zoznamu na A1 v programe Excel. (Tento proces opakovane prepisuje tú istú bunku.)

2. Kód Popis.

Týmto sa končí návod na používanie systému, po ktorom nasleduje vysvetlenie kódu.

Podrobnosti si môžete pozrieť v kóde, ale kľúčovým bodom je ďalšie volanie metódy getFolderOrFile v metóde getFolderOrFile.

V procese vyhľadávania priečinkov sa proces ďalej opakuje vyvolaním procesu vyhľadávania priečinkov, ktorý je mechanizmom na vyhľadávanie všetkých priečinkov.

Volaním vlastnej metódy opakovane volá svoju vlastnú metódu, kým je priečinok nájdený, pričom prehľadáva všetky priečinky.

3. zhrnutie

Ak potrebujete pomoc s tým, ako získať zoznam súborov a zoznam priečinkov vrátane podpriečinkov pomocou VBA (makier programu Excel), pozrite si túto časť.

Ďakujeme vám za sledovanie až do konca.