Bestanden en mappen recursief weergeven met Excel VBA
Datum van publicatie:
Bijgewerkt:
Artikelen > Bestanden en mappen recursief weergeven met Excel VBA
2026 status en veilig gebruik
Conclusie: Recursief elke map bezoeken, de bestanden die u nodig hebt uit te zenden, en elke kind map terug in dezelfde procedure. Voeg expliciete foutafhandeling en een beleid voor kruispunten, symbolische links, verborgen mappen en toegangspaden toe.
Wat je zult leren
- Hoe bestandssysteem Object stelt mappen, submappen, bestanden, namen en paden bloot.
- Hoe recursie een complete boom bouwt en waarom diepe of cyclische bomen bescherming nodig hebben.
- Hoe schrijf je resultaten naar een werkblad zonder trage cel-per-cel operaties op grote schaal.
Voor wie: Excel-gebruikers inventariseren een gecontroleerde Windows-mapboom.
Actualisatie voor 2026: Het monster weerspiegelt de oorspronkelijke lokale test van de auteur. Valideer permissies en link gedrag op een kopie van uw directory structuur, en overweeg PowerShell of een speciale inventaris tool voor zeer grote of beveiligingsgevoelige bomen.
Veiligheidsopmerking: de opdrachten en configuratievoorbeelden uit het oorspronkelijke artikel zijn niet opnieuw in een moderne productieomgeving uitgevoerd. Controleer ondersteunde versies, back-ups, toegangsbeheer en terugrolstappen eerst in een afzonderlijke testomgeving.
Officiële primaire bronnen
Overzicht
Ik zou willen beschrijven hoe ik een lijst van bestanden en een lijst van mappen, inclusief submappen, kan verkrijgen met behulp van VBA (Excel macro). Dit artikel is bedoeld voor mensen die de volgende taken willen programmeren
- Ik wil een lijst van alle bestanden of mappen onder een map met hun volledige paden.
- U wilt de verwerking in een lus uitvoeren voor bestanden of mappen onder een map.
Inhoudsopgave
1. Programmeer methode
Referentievoorbeelden van programmering worden hieronder gegeven.
Aangezien het is gemaakt in Function, zou ik het graag gekopieerd willen hebben zoals het is en de methode-aanroepen laten maken vanuit 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
Om het te gebruiken, geef het volgende als argumenten.
- filePath: map. Voorbeeld.) C:\Users\user\Desktop\test
- kind: Pas waar, onwaar. Indien True, geeft een lijst van bestanden. Indien false, geeft een lijst van mappen.
- list: De verzameling wordt gebruikt om de resultaten op te slaan. Hieronder wordt een voorbeeld gegeven.
Hieronder volgt een voorbeeldimplementatie van een werkelijke functie-oproep.
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
Het oproepen van getFolderOrFile zal een lijst van bestanden of een lijst van mappen in lijst opslaan. Het implementatievoorbeeld is False, dus de lijst met mappen wordt opgeslagen.
Beschrijf het proces dat je wilt doen in het "TODO" gedeelte in de For verklaring. ITEM kan worden behandeld als een String-variabele.
De referentiebron is het proces van het instellen van de verworven lijst op A1 in Excel. (Het proces overschrijft herhaaldelijk dezelfde cel.)
2. Code Omschrijving.
Dit is het einde van de instructies over het gebruik van het systeem, gevolgd door een uitleg van de code.
De details zijn te zien in de code, maar het belangrijkste punt is de verdere aanroep van getFolderOrFile in de methode getFolderOrFile.
In het proces van het zoeken naar mappen wordt het proces verder herhaald door het proces van het zoeken naar mappen op te roepen, dat een mechanisme is om alle mappen te doorzoeken.
Door zijn eigen methode aan te roepen, roept hij herhaaldelijk zijn eigen methode aan zolang de map wordt gevonden, waarbij alle mappen worden doorzocht.
3. samenvatting
Indien u hulp nodig hebt bij het verkrijgen van een lijst van bestanden en een lijst van mappen, inclusief submappen, met behulp van VBA (Excel macro's), raadpleeg dan dit onderdeel.