La función Dir

En VBA existe una función muy útil para determinar si un archivo existe, esa es la función Dir que además nos puede ayudar a hacer un recorrido sobre una carpeta para conocer los archivos que hay dentro.

Validar la existencia de un archivo

La función Dir acepta una cadena de texto como argumento la cual representa la ruta hacia el  archivo que estamos buscando. Si solamente se especifica el nombre del archivo, entonces la función busca dentro del directorio actual.

Si el archivo existe, la función Dir regresa el nombre del archivo como una cadena de texto. Es importante mencionar que la función solo regresa el nombre del archivo y no la ruta completa. Si por el contrario la función no encuentra el archivo entonces regresa una cadena de texto vacía. A continuación un ejemplo de uso de esta función:

Dir("C:ejemplo.xlsx")

Esta sentencia buscará el archivo llamado ejemplo.xls dentro de la unidad C. Si se encuentra el archivo se regresará la cadena de texto “ejemplo.xlsx” de lo contrario regresará una cadena de texto vacía. Una manera fácil de comprobar si la cadena de texto está vacía es utilizando la función Len la cual mide la longitud de una cadena de texto. Observa el siguiente ejemplo de función:

Verificando la existencia de un archivo

Si el archivo no es encontrado, la función ExisteArchivo regresará el valor Falso, de lo contrario retornará el valor Verdadero.

Mostrar archivos de una carpeta

Otro ejemplo de uso de la función Dir es que la podemos utilizar para recorrer y mostrar los archivos de una carpeta. Para este ejemplo haré uso del carácter comodín “*” que significa cualquier combinación de caracteres. De ésta manera puedo conocer los archivos Excel que se encuentran dentro de una carpeta sin conocer su nombre específico.

Recorrer los archivos Excel dentro de una carpeta

Cuando se quieren obtener archivos adicionales que cumplan con la misma ruta especificada, entonces se puede llamar la función Dir sin proporcionar argumentos. Es por eso que en el ejemplo anterior puedes observar que la función Dir dentro del bucle Do-While está sin argumentos.