Percorrer ficheiros numa pasta utilizando Dir
Efetuar algum processo nos ficheiros de uma pasta
O código abaixo mostra como pode processar os ficheiros de uma pasta. FileSpec é o filtro que pode adaptar para obter apenas ficheiros cujo nome siga um determinado padrão, por exemplo, *.xslx para obter todos os ficheiros Excel com extensão xslx.
Se olhar para o código, verá que apenas a primeira vez que Dir tem o argumento FileSpec. Esta primeira chamada devolve o primeiro ficheiro. As chamadas subsequentes, dentro do ciclo, recuperam nomes de ficheiros extra, até ser devolvida uma cadeia vazia, o que significa que não há mais ficheiros para processar.
Nota: Uma forma alternativa de inspecionar a pasta é utilizar o File System Object, que é flexível. As vantagens de utilizar Dir são: 1. é nativo no VBA, pelo que não é necessário referenciar a biblioteca FSO; 2. Dir é rápido.
Dim strFileName As String
'TODO: Specify path and file spec
Dim strFolder As String: strFolder = "C:\temp\"
Dim strFileSpec As String: strFileSpec = strFolder & "*.*"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
'TODO: replace Debug.Print by the process you want to do on the file
'Dim strFilePath As String: strFilePath = strFolder & strFileName
Debug.Print strFileName
strFileName = Dir
Loop
Criar uma matriz de nomes de ficheiros para uma determinada pasta
No código abaixo, os nomes dos ficheiros são armazenados numa matriz. Isto permite-lhe separar a atividade específica de processamento da atividade de encontrar os ficheiros a processar utilizando Dir.
Dim strFileName As String
'TODO: Specify path and file spec
Dim strFolder As String: strFolder = "C:\temp\"
Dim strFileSpec As String: strFileSpec = strFolder & "*.*"
Dim FileList() As String
Dim intFoundFiles As Integer
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
ReDim Preserve FileList(intFoundFiles)
FileList(intFoundFiles) = strFileName
intFoundFiles = intFoundFiles + 1
strFileName = Dir
Loop
A imagem abaixo mostra a parte do menu Código VBA (download) que permite inserir o fragmento de código pretendido.
