Vypsání souborů a složek rekurzivně pomocí Excel VBA
Publikováno:
Aktualizováno:
Články › Vypsání souborů a složek rekurzivně pomocí Excel VBA
Stav v roce 2026 a bezpečné použití
Závěr: Rekurzivně navštivte každou složku, odešlete soubory, které potřebujete, a předejte každou podřízenou složku zpět do stejného postupu. Přidejte explicitní zpracování chyb a zásady pro spojení, symbolické odkazy, skryté složky a cesty s odepřeným přístupem.
Co se dozvíte
- Jak FileSystemObject zpřístupňuje složky, podsložky, soubory, názvy a cesty.
- Jak rekurze vytváří úplný strom a proč hluboké nebo cyklické stromy potřebují zabezpečení.
- Jak zapsat výsledky do listu bez pomalých operací po buňce ve velkém měřítku.
Pro koho je článek určen: Uživatelé aplikace Excel vytvářející inventář řízeného stromu adresářů Windows.
Aktuální stav v roce 2026: Vzorek odráží původní místní test autora. Ověřte oprávnění a chování odkazů na kopii vaší adresářové struktury a zvažte PowerShell nebo vyhrazený inventární nástroj pro velmi velké stromy nebo stromy citlivé na zabezpečení.
Bezpečnostní poznámka: Příkazy a konfigurační příklady z původního článku nebyly znovu spuštěny v současném produkčním prostředí. Před nasazením ověřte podporované verze, vytvořte zálohu a připravte postup návratu v odděleném testovacím prostředí.
Oficiální zdroje
Přehled
Následující část popisuje, jak získat seznam souborů a seznam složek včetně podsložek pomocí VBA (makro Excelu). Článek je určen lidem, kteří chtějí naprogramovat následující úkoly.
- Chci získat seznam všech souborů nebo složek ve složce s jejich úplnými cestami.
- Chcete provést zpracování ve smyčce pro soubory nebo složky ve složce.
1. Metoda programování
Níže jsou uvedeny referenční příklady programování.
Vzhledem k tomu, že je vytvořena ve Function, chtěl bych ji zkopírovat tak, jak je, a volání metod provést ze 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
Chcete-li ji použít, předejte jako argumenty následující údaje.
- filePath···adresář. Příklad).C:\Users\user\Desktop\test
- kind···Předat true, false. Pokud je True, vrátí seznam souborů. Pokud false, vrátí seznam složek.
- list···Kolekce slouží k ukládání výsledků. Níže je uveden příklad implementace.
Příklad implementace skutečného volání funkce je uveden níže.
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
Volání getFolderOrFile uloží seznam souborů nebo seznam složek do seznamu. Příklad implementace je False, takže seznam složek je uložen.
Popište proces, který chcete provést, v části "TODO" v příkazu For. ITEM lze považovat za proměnnou typu String.
Referenčním zdrojem je proces nastavení získaného seznamu na A1 v aplikaci Excel. (Proces opakovaně přepisuje stejnou buňku).
2. Popis kódu.
Tímto končí návod k použití systému a následuje vysvětlení kódu.
Podrobnosti jsou uvedeny v kódu, ale klíčové je další volání metody getFolderOrFile v metodě getFolderOrFile.
V procesu vyhledávání složek se proces dále opakuje voláním procesu vyhledávání složek, což je mechanismus pro vyhledávání všech složek.
Voláním své vlastní metody opakovaně volá svou vlastní metodu, dokud je složka nalezena, a prohledává všechny složky.
3. shrnutí
Pokud potřebujete poradit, jak získat seznam souborů a seznam složek včetně podsložek pomocí VBA (makra aplikace Excel), přečtěte si tuto část.
Tím jsou shrnuty hlavní kroky a omezení, která je třeba zohlednit.