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