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