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