Zoznam súborov a priečinkov rekurzívne pomocou Excel VBA
Dátum vydania:
Aktualizované:
Technické články > Zoznam súborov a priečinkov rekurzívne pomocou Excel VBA
stav v roku 2026 a bezpečné používanie
Záver: Rekurzívne navštívte každý priečinok, vygenerujte potrebné súbory a vráťte každý podradený priečinok späť do rovnakého postupu. Pridajte explicitné spracovanie chýb a politiku pre spojenia, symbolické odkazy, skryté priečinky a cesty so zakázaným prístupom.
Čo sa naučíte
- Ako FileSystemObject odhaľuje priečinky, podpriečinky, súbory, názvy a cesty.
- Ako rekurzia vytvára úplný strom a prečo hlboké alebo cyklické stromy potrebujú zabezpečenie.
- Ako zapisovať výsledky do pracovného hárka bez pomalých operácií po bunke vo veľkom meradle.
Pre koho je to určené: Používatelia programu Excel, ktorí inventarizujú riadený strom adresárov systému Windows.
Pozícia z roku 2026: Vzorka odráža pôvodný miestny test autora. Overte povolenia a správanie odkazov na kópii vašej adresárovej štruktúry a zvážte PowerShell alebo vyhradený inventárny nástroj pre veľmi veľké stromy alebo stromy citlivé na bezpečnosť.
Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, riadenie prístupu a kroky vrátenia v samostatnom testovacom prostredí.
Hlavné oficiálne zdroje
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.
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.