Recorrer los archivos de una carpeta con Dir
Realizar algún proceso en los archivos de una carpeta
El siguiente código muestra cómo se pueden procesar los archivos de una carpeta. FileSpec es el filtro que puede adaptar para recuperar sólo los archivos cuyo nombre siga un determinado patrón, por ejemplo *.xslx para obtener todos los archivos de Excel con extensión xslx.
Si miras el código verás que sólo la primera vez Dir tiene el argumento FileSpec. Esta primera llamada devuelve el primer fichero. Las siguientes llamadas, dentro del bucle, recuperan nombres de fichero adicionales, hasta que se devuelve una cadena vacía, lo que significa que no hay más ficheros que procesar.
Nota: Una forma alternativa de inspeccionar la carpeta es usando el Objeto del Sistema de Archivos, que es flexible. Las ventajas de usar Dir son 1. es nativo en VBA por lo que no tiene que hacer referencia a la biblioteca FSO, 2. Dir es 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
Crear una matriz de nombres de archivo para una carpeta determinada
En el código siguiente, los nombres de los ficheros se almacenan en una matriz. Esto permite separar la actividad específica de procesar de la actividad de encontrar los archivos a procesar usando 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
La siguiente imagen muestra la parte del menú Código VBA (descargar) que le permite insertar el fragmento de código que necesita.
