Så här får du fram en lista över filer, inklusive undermappar, och en lista över mappar med hjälp av VBA (Excel-makro).


Datum för offentliggörande:12 juli 2022.



INFOMARTION > Så här får du fram en lista över filer, inklusive undermappar, och en lista över mappar med hjälp av VBA (Excel-makro).

Översikt.

Jag skulle vilja beskriva hur man får en lista över filer och en lista över mappar, inklusive undermappar, med hjälp av VBA (Excel-makro). Artikeln är avsedd för personer som vill programmera följande uppgifter

  • Jag vill få en lista över alla filer eller mappar under en mapp med deras fullständiga sökvägar.
  • Du vill utföra bearbetning i en slinga för filer eller mappar under en mapp.

Innehållsförteckning

  1. Programmeringsmetod
  2. Kodbeskrivning.
  3. sammanfattning

1. Programmeringsmetod

Referensexempel på programmering ges nedan.

Eftersom den skapas i Function vill jag att den kopieras över som den är och att metodanropen görs från 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

För att använda den, skicka följande som argument.

  • filePath・・・katalog. Exempel.)C:\Users\user\Desktop\test
  • kind・・・Passera sant, falskt. Om True, returnerar en lista med filer. Om den är falsk, returneras en lista med mappar.
  • list・・・Samlingen används för att lagra resultaten. Nedan följer ett exempel på ett genomförande.

Nedan visas en exempelimplementering av ett faktiskt funktionsanrop.

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

Om du anropar getFolderOrFile lagras en lista med filer eller en lista med mappar i listan. Implementeringsexemplet är False, så listan över mappar lagras.

Beskriv den process du vill göra i "TODO"-avsnittet i For-angivelsen. ITEM kan behandlas som en String-variabel.

Referenskällan är processen att ställa in den förvärvade listan till A1 i Excel. (Processen skriver över samma cell upprepade gånger.)

2. Kodbeskrivning.

Detta är slutet på instruktionerna om hur man använder systemet, följt av en förklaring av koden.

Detaljerna kan ses i koden, men den viktigaste punkten är det ytterligare anropet till getFolderOrFile i getFolderOrFile-metoden.

I processen för att söka efter mappar upprepas processen ytterligare genom att kalla processen för att söka efter mappar, som är en mekanism för att söka efter alla mappar.

Genom att anropa sin egen metod anropar den upprepade gånger sin egen metod så länge mappen hittas och söker i alla mappar.

3. sammanfattning

Om du behöver hjälp med att få fram en lista över filer och mappar, inklusive undermappar, med hjälp av VBA (Excel-makros) kan du läsa det här avsnittet.

Tack för att du tittade på till slutet.




■INFORMATION

Klicka här för att komma till den översta sidan med information.


■PROFILE

Klicka här för en profil.


■Kontaktuppgifter.

För frågor om artikeln, vänligen kontakta oss här.