Nota
La función, el método, el objeto o la propiedad descritos en este tema se deshabilitan si el servicio de expresiones de Microsoft Jet se ejecuta en modo de espacio aislado, lo que impide la evaluación de expresiones potencialmente inseguras. Para obtener más información sobre el modo de espacio aislado, busque "modo de espacio aislado" en la Ayuda.
Devuelve una cadena que representa el nombre de un archivo, directorio o carpeta que coincide con un patrón o atributo de archivo especificados, o con la etiqueta de volumen de una unidad.
Sintaxis
dir[(pathname [, attributes] )]
La sintaxis de la función Dir consta de los siguientes argumentos:
| Argumento | Descripción |
|---|---|
| Nombre de ruta | Opcional. Expresión de cadena que especifica un nombre de archivo: puede incluir directorio o carpeta y unidad. Se devuelve una cadena de longitud cero ("") si no se encuentra el nombre de ruta . |
| atributos | Opcional. Constante o expresión numérica, cuya suma especifica los atributos del archivo. Si se omite, devuelve los archivos que coinciden con el nombre de ruta pero que no tienen atributos. |
Configuración
La configuración del argumento de atributoses:
| Constante | Valor | Descripción |
|---|---|---|
| vbNormal | 0 | (Predeterminado) Especifica archivos sin atributos. |
| vbReadOnly | 1 | Especifica los archivos de solo lectura además de los archivos sin atributos. |
| vbHidden | 2 | Especifica los archivos ocultos además de los archivos sin atributos. |
| Sistema vbSystem | 4 | Especifica los archivos del sistema además de los archivos sin atributos. No disponible en Macintosh. |
| vbVolume | 8 | Especifica la etiqueta del volumen; si se especifica cualquier otro atributo, se omite VBVOLUME . No disponible en Macintosh. |
| vbDirectory | 16 | Especifica directorios o carpetas, además de archivos sin atributos. |
| vbAlias | 64 | El nombre de archivo especificado es un alias. Disponible solo en Macintosh. |
Nota
Estas constantes se especifican mediante Visual Basic para Aplicaciones (VBA) y se pueden usar en cualquier parte del código en lugar de los valores reales.
Observaciones
En Microsoft Windows, Dir admite el uso de varios caracteres comodín (*) y de uno solo caracteres (?) para especificar varios archivos. En Macintosh, estos caracteres se tratan como caracteres de nombre de archivo válidos y no se pueden usar como comodines para especificar varios archivos.
Dado que Macintosh no admite los caracteres comodín, use el tipo de archivo para identificar grupos de archivos. Puede usar la función MacID para especificar el tipo de archivo en lugar de usar los nombres de archivo. Por ejemplo, la instrucción siguiente devuelve el nombre del primer archivo de texto de la carpeta actual:
Dir("SomePath", MacID("TEXT"))
Para iterar en todos los archivos de una carpeta, especifique una cadena vacía:
Dir("")
Si usa la función MacID con Dir en Windows, se produce un error.
Cualquier valor de atributo mayor que 256 se considera un valor MacID .
Debe especificar el nombre de ruta la primera vez que llame a la función Dir o se producirá un error. Si también especifica atributos de archivo, debe incluirse pathname .
Dir devuelve el primer nombre de archivo que coincide con pathname. Para obtener nombres de archivo adicionales que coincidan con el nombre de ruta, vuelva a llamar a Dir sin argumentos. Cuando no coinciden más nombres de archivo, Dir devuelve una cadena de longitud cero (""). Cuando se devuelve una cadena de longitud cero, debe especificar el nombre de ruta en las llamadas posteriores o se produce un error. Puede cambiar a un nuevo nombre de ruta sin recuperar todos los nombres de archivo que coincidan con el nombre de ruta actual. Sin embargo, no puede llamar a la función Dir de forma recursiva. Llamar a Dir con el atributo vbDirectory no devuelve continuamente subdirectorios.
Propina Dado que los nombres de archivo no se recuperan en ningún orden, es posible que desee almacenar los nombres de archivo devueltos en una matriz y, después, ordenar la matriz.
Ejemplo
Nota
Los ejemplos siguientes muestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione referencia para desarrolladores en la lista desplegable situada junto a búsqueda y escriba uno o varios términos en el cuadro de búsqueda.
En este ejemplo se usa la función Dir para comprobar si existen determinados archivos y directorios. En Macintosh, "HD:" es el nombre de unidad predeterminado y partes del nombre de ruta están separadas por dos puntos en lugar de barras diagonales inversas. Además, los caracteres comodín de Windows se tratan como caracteres de nombre de archivo válidos en Macintosh. Sin embargo, puede usar la función MacID para especificar grupos de archivos.
Dim MyFile, MyPath, MyName
' Returns "WIN.INI" (on Microsoft Windows) if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")
' Returns filename with specified extension. If more than one *.ini
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")
' Call Dir again without arguments to return the next *.INI file in the
' same directory.
MyFile = Dir
' Return first *.TXT file with a set hidden attribute.
MyFile = Dir("*.TXT", vbHidden)
' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Ignore the current directory and the encompassing directory.
If MyName <> "." And MyName <> ".." Then
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
End If ' it represents a directory.
End If
MyName = Dir ' Get next entry.
Loop