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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *