VBA – Listar Arquivos de um diretório
Mais uma para a caixa de ferramentas de VBA. A macro abaixo retorna um Array de String com a lista de nomes dos arquivos contidos na pasta informada:
Public Function ListaArquivos(ByVal Caminho As String) As String() 'Atenção: Faça referência à biblioteca Micrsoft Scripting Runtime Dim FSO As New FileSystemObject Dim result() As String Dim Pasta As Folder Dim Arquivo As File Dim Indice As Long ReDim result(0) As String If FSO.FolderExists(Caminho) Then Set Pasta = FSO.GetFolder(Caminho) For Each Arquivo In Pasta.Files Indice = IIf(result(0) = "", 0, Indice + 1) ReDim Preserve result(Indice) As String result(Indice) = Arquivo.Name Next End If ListaArquivos = result ErrHandler: Set FSO = Nothing Set Pasta = Nothing Set Arquivo = Nothing End Function
A macro abaixo é um exemplo de chamanda a função acima, listando os arquivos da pasta C:\temp, como informado no código.
Private Sub ListaArquivos() Dim arquivos() As String Dim lCtr As Long arquivos = ListaArquivos("C:\temp") For lCtr = 0 To UBound(arquivos) Debug.Print arquivos(lCtr) Next End Sub
Importante: Faça referência à biblioteca Micrsoft Scripting Runtime para ter acesso aos objetos da File System Object (FSO), necessários para execução do exemplo.
Bom proveito!

22 Convidados
3 Bots
outubro 27th, 2010 at 18:28
como faço para poder colar todas as informações em uma pasta de trabalho?
outubro 27th, 2010 at 22:00
Juliano,
Seria isso?
http://www.tomasvasquez.com.br/blog/microsoft-office/vba-transferindo-os-dados-de-um-listbox-para-uma-planilha
Abraços
Tomás
dezembro 12th, 2011 at 22:50
Boa noite. Fiz um teste, colando a macro que lista os arquivos de um diretório, porém a macro não retornou nada. Saberia dizer porquê?
1) Onde a macro lista o nome dos arquivos do diretório?
2) O que significa o comando “Debug.Print arquivos(lCtr)”? (esse comando não fez nada). Obrigado
dezembro 13th, 2011 at 9:25
Daniel,
A macro funciona, mas ao invés de jogar os valores na tela, ele joga na tela de verificação imediata do VBA. Você pode ativar essa tela indo em Exibir->Janela ‘Verificação imediata’.
Experimente trocar a linha
Debug.Print arquivos(lCtr)
Para:
MsgBox arquivos(lCtr)
E veja o que acontece.
Abraços
Tomás