Vba: jak wyświetlić listę plików w folderze
Aby wyświetlić listę plików w folderze, możesz użyć następujących metod w VBA:
Metoda 1: Wyświetl listę wszystkich plików w folderze
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Metoda 2: Wyświetl w folderze tylko pliki .xlsx
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę w przypadku folderu o następującej ścieżce pliku:
- C:\Users\bob\Documents\bieżące_dane
Folder zawiera dwa pliki .xlsx i trzy pliki .csv :
Przykład 1: Lista wszystkich plików w folderze
Możemy utworzyć następujące makro, aby wyświetlić listę wszystkich plików w folderze:
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
Cells(i + 1, 1) = objFile.Name
i = i + 1
Next objFile
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Widzimy, że nazwy wszystkich plików w folderze (niezależnie od ich rozszerzenia) są teraz wymienione w kolumnie A naszego arkusza Excel.
Przykład 2: Wyświetla w folderze tylko pliki .xlsx
Możemy utworzyć następujące makro, aby wyświetlić w folderze tylko pliki z rozszerzeniem .xlsx :
SubListFiles ()
Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")
For Each objFile In oFolder.Files
If Right(objFile.Name, 4) = "xlsx" Then
Cells(i + 1, 1) = objFile.Name
i = i + 1
End If
Next objFile
End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Widzimy, że nazwy tylko plików z rozszerzeniem .xlsx w folderze są teraz wymienione w kolumnie A naszego arkusza Excel.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
Jak tworzyć foldery za pomocą VBA
Jak usunąć foldery za pomocą VBA
Jak zmienić nazwę pliku za pomocą VBA
Jak sprawdzić, czy plik istnieje za pomocą VBA