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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *