Nota: La función, método, objeto o propiedad descrita en este tema se deshabilita si el Servicio de expresiones de Microsoft Jet se ejecuta en modo de espacio aislado, lo que impide la evaluación de expresiones potencialmente no seguras. Para obtener más información sobre el modo de espacio aislado, busca "modo de espacio aislado" en la Ayuda.
Devuelve un tipo de datos String que representa el nombre de un archivo, directorio o carpeta que coincide con un patrón o atributo de archivo especificado, o con la etiqueta de volumen de una unidad.
Sintaxis
Dir[(nombre_de_ruta [, atributos] )]
La sintaxis de la función Dir tiene estos argumentos:
Argumento |
Descripción |
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 nombre de ruta . |
Atributos |
Opcional. Constant o expresión numérica, cuya suma especifica atributos de archivo. Si se omite, devuelve archivos que coinciden con nombre de ruta pero no tienen atributos. |
Configuración
Los atributosargumento la configuración son:
Constante |
Valor |
Descripción |
vbNormal |
0 |
(Valor predeterminado) Especifica los archivos sin atributos. |
vbReadOnly |
1 |
Especifica archivos de solo lectura además de archivos sin atributos. |
vbHidden |
2 |
Especifica los archivos ocultos además de los archivos sin atributos. |
VbSystem |
4 |
Especifica los archivos del sistema además de los archivos sin atributos. No disponible en Macintosh. |
vbVolume |
8 |
Especifica la etiqueta de volumen; si se especifica cualquier otro atributo, vbVolume se omite. 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: Visual Basic para Aplicaciones (VBA) especifica estas constantes y se pueden usar en cualquier lugar del código en lugar de los valores reales.
Comentarios
En Microsoft Windows, Dir admite el uso de caracteres comodín de varios caracteres (*) y caracteres únicos (?) para especificar varios archivos. En Macintosh, estos caracteres se tratan como caracteres de nombre de archivo válidos y no se pueden usar 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 siguiente instrucción devuelve el nombre del primer archivo TEXT de la carpeta actual:
Dir("SomePath", MacID("TEXT"))
Para iterar por 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 de MacID .
Debe especificar nombre_de_ruta la primera vez que llame a la función Dir o se produzca un error. Si también especifica atributos de archivo, debe incluirse nombre_de_ruta .
Dir devuelve el primer nombre de archivo que coincide con nombre de ruta. Para obtener nombres de archivo adicionales que coincidan con nombre de ruta, vuelva a llamar a Dir sin argumentos. Cuando no coincidan más nombres de archivo, Dir devuelve una cadena de longitud cero (""). Una vez devuelta una cadena de longitud cero, debe especificar nombre_de_ruta en llamadas posteriores o se produce un error. Puede cambiar a un nombre de ruta nuevo 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. Al llamar a Dir con el atributo vbDirectory , no se devuelven subdirectorios continuamente.
Sugerencia Dado que los nombres de archivo se recuperan en ningún orden en particular, es posible que desee almacenar los nombres de archivo devueltos en un matriz y, a continuación, 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 las partes del nombre de ruta se separan con 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