¿Cómo usar la función Dir en VBA?

La función `Dir` en VBA (Visual Basic for Applications) se utiliza para obtener el nombre de un archivo o directorio que coincida con un determinado patrón de búsqueda. Es especialmente útil para iterar a través de todos los archivos de un directorio o para comprobar la existencia de un archivo o carpeta.

Aquí tienes un desglose básico de cómo utilizar la función `Dir`:

  • Obtener el primer archivo que coincide con un patrón:

Usando `Dir` con un argumento especificado, obtienes el primer archivo o carpeta que coincide con el patrón.

   Dim filename As String
   filename = Dir("C:MiCarpeta*.txt")

En este ejemplo, busca el primer archivo con la extensión `.txt` en la carpeta `C:MiCarpeta`.

  • Iterar a través de todos los archivos que coinciden:

Para obtener el siguiente archivo en la lista, simplemente llama a `Dir` sin argumentos.

   Dim filename As String
   filename = Dir("C:MiCarpeta*.txt")
   
   Do While filename <> ""
       Debug.Print filename  ' Imprime el nombre del archivo en la ventana de depuración
       filename = Dir        ' Obtiene el siguiente archivo
   Loop
  • Verificar la existencia de un archivo o carpeta:

Si `Dir` devuelve una cadena vacía, significa que no encontró ningún archivo o carpeta que coincida con el patrón.

   Dim filePath As String
   filePath = "C:MiCarpetaMiArchivo.txt"
   
   If Dir(filePath) <> "" Then
       MsgBox "El archivo existe!"
   Else
       MsgBox "El archivo no existe."
   End If
  • Usar atributos opcionales:

Puedes especificar atributos opcionales para buscar archivos ocultos, de solo lectura, etc. Sin embargo, estos sólo se pueden utilizar al buscar otros archivos después de la primera llamada a `Dir`.

   filename = Dir("C:MiCarpeta*", vbHidden Or vbSystem)

Toma en cuenta que `Dir` es una función de estado interno, esto significa que de ser llamada nuevamente antes de terminar el ciclo `Do While`, podría reiniciar la búsqueda. Por eso, es recomendable evitar anidar llamadas a `Dir`.

Con el uso de esta función se debe tener precaución con rutas y nombres, especialmente cuando se trata de caracteres comodín como `*` o `?`, para evitar resultados inesperados.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project