Vba: como listar arquivos em uma pasta


Você pode usar os seguintes métodos em VBA para listar arquivos em uma pasta:

Método 1: liste todos os arquivos da pasta

 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

Método 2: listar apenas arquivos .xlsx na pasta

 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

Os exemplos a seguir mostram como usar cada método na prática com uma pasta que possui o seguinte caminho de arquivo:

  • C:\Usuários\bob\Documentos\dados_atual

A pasta contém dois arquivos .xlsx e três arquivos .csv :

Exemplo 1: Liste todos os arquivos na pasta

Podemos criar a seguinte macro para listar todos os arquivos da pasta:

 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

Quando executamos esta macro, recebemos a seguinte saída:

Podemos ver que os nomes de todos os arquivos da pasta (independentemente da extensão) agora estão listados na coluna A da nossa planilha Excel.

Exemplo 2: listar apenas arquivos .xlsx na pasta

Podemos criar a seguinte macro para listar apenas os arquivos que possuem extensão .xlsx na pasta:

 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

Quando executamos esta macro, recebemos a seguinte saída:

Podemos ver que os nomes apenas dos arquivos com extensão .xlsx na pasta agora estão listados na coluna A de nossa planilha Excel.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

Como criar pastas usando VBA
Como deletar pastas usando VBA
Como renomear um arquivo usando VBA
Como verificar se o arquivo existe usando VBA

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *