Jak uzyskać listę plików, w tym podfolderów, oraz listę folderów za pomocą VBA (makro Excela).


Data publikacji:12 lipca 2022 r.



INFOMARTION > Jak uzyskać listę plików, w tym podfolderów, oraz listę folderów za pomocą VBA (makro Excela).

Przegląd.

Chciałbym opisać jak za pomocą VBA (makro Excela) uzyskać listę plików oraz listę folderów wraz z podfolderami. Artykuł przeznaczony jest dla osób, które chcą zaprogramować następujące zadania

  • Chcę uzyskać listę wszystkich plików lub folderów pod folderem z ich pełnymi ścieżkami.
  • Chcesz wykonać przetwarzanie w pętli dla plików lub folderów w ramach folderu.

Spis treści

  1. Metoda programowania
  2. Kod Opis.
  3. streszczenie

1. Metoda programowania

Poniżej podano referencyjne przykłady programowania.

Ponieważ jest on tworzony w Function, chciałbym, aby został skopiowany nad tym, jak jest i aby wywołania metod były wykonywane z 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

Aby go użyć, przekaż następujące elementy jako argumenty.

  • filePath・・・katalog. Przykład.)C:\Users\user\Desktop\test
  • kind・・・Pass true, false. Jeśli True, zwraca listę plików. Jeśli false, zwraca listę folderów.
  • list・・・Kolekcja służy do przechowywania wyników. Przykładowa implementacja została przedstawiona poniżej.

Przykładowa implementacja rzeczywistego wywołania funkcji jest przedstawiona poniżej.

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

Wywołanie getFolderOrFile spowoduje zapisanie listy plików lub listy folderów na liście. W przykładzie implementacji jest False, więc lista folderów jest przechowywana.

Opisz proces, który chcesz wykonać w sekcji "TODO" w oświadczeniu For. ITEM może być traktowany jako zmienna typu String.

Źródłem odniesienia jest proces ustawiania pozyskanej listy na A1 w Excelu. (Proces wielokrotnie nadpisuje tę samą komórkę.)

2. Kod Opis.

Na tym kończy się instrukcja obsługi systemu, po czym następuje wyjaśnienie kodu.

Szczegóły można zobaczyć w kodzie, ale kluczowym punktem jest dalsze wywołanie metody getFolderOrFile.

W procesie wyszukiwania folderów proces ten jest dalej powtarzany poprzez wywołanie procesu wyszukiwania folderów, który jest mechanizmem przeszukiwania wszystkich folderów.

Wywołując własną metodę, wielokrotnie wywołuje własną metodę, dopóki folder jest znaleziony, przeszukując wszystkie foldery.

3. streszczenie

Jeśli potrzebujesz pomocy, jak uzyskać listę plików i listę folderów, w tym podfolderów, za pomocą VBA (makra Excela), zapoznaj się z tym działem.

Dziękujemy za obejrzenie do końca.