Vba: як створити список файлів у папці


Щоб отримати список файлів у папці, у VBA можна використовувати такі методи:

Спосіб 1. Перерахуйте всі файли в папці

 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

Спосіб 2. Перелічіть лише файли .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

У наведених нижче прикладах показано, як використовувати кожен метод на практиці з папкою, яка має такий шлях до файлу:

  • C:\Users\bob\Documents\current_data

Папка містить два файли .xlsx і три файли .csv :

Приклад 1: список усіх файлів у папці

Ми можемо створити такий макрос, щоб отримати список усіх файлів у папці:

 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

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Ми бачимо, що імена всіх файлів у папці (незалежно від їх розширення) тепер перераховані в стовпці A нашого аркуша Excel.

Приклад 2: список лише файлів .xlsx у папці

Ми можемо створити такий макрос, щоб перелічити лише файли з розширенням .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

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Ми бачимо, що імена лише файлів із розширенням .xlsx у папці тепер перераховані в стовпці A нашого аркуша Excel.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:

Як створити папки за допомогою VBA
Як видалити папки за допомогою VBA
Як перейменувати файл за допомогою VBA
Як перевірити, чи файл існує за допомогою VBA

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *