Nota: A função, método, objeto ou propriedade descrita neste tópico está desativada se o Serviço Microsoft Jet Expression estiver em execução no modo sandbox, o que impede a avaliação de expressões potencialmente inseguras. Para obter mais informações sobre o modo sandbox, procure "modo sandbox" na Ajuda.
Devolve uma Cadeia que representa o nome de um ficheiro, diretório ou pasta que corresponde a um padrão ou atributo de ficheiro especificado ou à etiqueta de volume de uma unidade.
Sintaxe
Dir[(pathname [, attributes] )]
A sintaxe da função Dir tem estes argumentos:
Argumento |
Descrição |
pathname |
Opcional. Expressão de cadeia que especifica um nome de ficheiro — pode incluir diretório ou pasta e unidade. É devolvida uma cadeia de comprimento zero ("") se o nome do caminho não for encontrado. |
atributos |
Opcional. Constante ou expressão numérica, cuja soma especifica atributos de ficheiro. Se for omitido, devolve ficheiros que correspondem ao nome do caminho , mas não têm atributos. |
Definições
Os atributosargumento definições são:
Constante |
Valor |
Descrição |
vbNormal |
0 |
(Predefinição) Especifica ficheiros sem atributos. |
vbReadOnly |
1 |
Especifica ficheiros só de leitura para além de ficheiros sem atributos. |
vbHidden |
2 |
Especifica ficheiros ocultos para além de ficheiros sem atributos. |
VbSystem |
4 |
Especifica ficheiros de sistema para além de ficheiros sem atributos. Não está disponível no Macintosh. |
vbVolume |
8 |
Especifica a etiqueta de volume; se qualquer outra atribuição for especificada, vbVolume é ignorado. Não está disponível no Macintosh. |
vbDirectory |
16 |
Especifica diretórios ou pastas para além de ficheiros sem atributos. |
vbAlias |
64 |
O nome de ficheiro especificado é um alias. Disponível apenas no Macintosh. |
Nota: Estas constantes são especificadas por Visual Basic for Applications (VBA) e podem ser utilizadas em qualquer parte do código em vez dos valores reais.
Observações
No Microsoft Windows, o Dir suporta a utilização de carateres universais de múltiplos carateres (*) e de caráter único (?) para especificar múltiplos ficheiros. No Macintosh, estes carateres são tratados como carateres de nome de ficheiro válidos e não podem ser utilizados como carateres universais para especificar múltiplos ficheiros.
Uma vez que o Macintosh não suporta os carateres universais, utilize o tipo de ficheiro para identificar grupos de ficheiros. Pode utilizar a função MacID para especificar o tipo de ficheiro em vez de utilizar os nomes de ficheiro. Por exemplo, a seguinte instrução devolve o nome do primeiro ficheiro TEXT na pasta atual:
Dir("SomePath", MacID("TEXT"))
Para iterar todos os ficheiros numa pasta, especifique uma cadeia vazia:
Dir("")
Se utilizar a função MacID com o Dir no Windows, ocorre um erro.
Qualquer valor de atributos superior a 256 é considerado um valor MacID .
Tem de especificar pathname na primeira vez que chamar a função Dir ou ocorre um erro. Se também especificar atributos de ficheiro, tem de incluir pathname .
Dir devolve o primeiro nome de ficheiro que corresponde ao nome do caminho. Para obter nomes de ficheiro adicionais que correspondam ao nome do caminho, chame novamente Dir sem argumentos. Quando não existem mais nomes de ficheiros correspondentes, Dir devolve uma cadeia de comprimento zero (""). Assim que uma cadeia de comprimento zero for devolvida, tem de especificar pathname em chamadas subsequentes ou ocorre um erro. Pode alterar para um novo nome de caminho sem obter todos os nomes de ficheiro que correspondem ao nome do caminho atual. No entanto, não pode chamar a função Dir de forma recursiva. Chamar o Dir com o atributo vbDirectory não devolve continuamente subdiretórios.
Sugestão Uma vez que os nomes de ficheiro são obtidos sem ordem específica, poderá querer armazenar os nomes de ficheiro devolvidos num matriz e, em seguida, ordenar a matriz.
Exemplo
Nota: Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.
Este exemplo utiliza a função Dir para verificar se existem determinados ficheiros e diretórios. No Macintosh, "HD:" é o nome da unidade predefinido e as partes do nome do caminho são separadas por dois pontos em vez de barras invertidas. Além disso, os carateres universais do Windows são tratados como carateres de nome de ficheiro válidos no Macintosh. No entanto, pode utilizar a função MacID para especificar grupos de ficheiros.
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