Hoe krijg ik een lijst van bestanden, inclusief submappen, en een lijst van mappen met behulp van VBA (Excel macro).
Datum van publicatie:12 juli 2022.
INFOMARTION > Hoe krijg ik een lijst van bestanden, inclusief submappen, en een lijst van mappen met behulp van VBA (Excel macro).
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.
Bedankt voor het kijken tot het einde.
■INFORMATION
Klik hier om naar de bovenste pagina van INFORMATIE te gaan.
■PROFILE
■Contactgegevens.
Voor vragen over het artikel kunt u hier contact met ons opnemen.