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
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.
■INFORMATION
Kliknij tutaj, aby przejść do górnej strony INFORMACJI.
■PROFILE
Kliknij tutaj, aby zobaczyć profil.
■Dane kontaktowe.
W przypadku pytań dotyczących artykułu prosimy o kontakt tutaj.