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
  2. Code Omschrijving.
  3. samenvatting

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.