Nota
A função, método, objeto ou propriedade descrita neste tópico será 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 não seguras. Para obter mais informações sobre o modo sandbox, pesquise "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 do volume de uma unidade.
Sintaxe
Dir[(nome_caminho [, atributos] )]
A sintaxe da função Dir tem estes argumentos:
| Argumento | Descrição |
|---|---|
| nome do caminho | Opcional. Expressão de cadeia que especifica um nome de ficheiro – pode incluir diretório ou pasta e unidade. Uma cadeia de comprimento zero ("") é devolvida se o nome do caminho não for encontrado. |
| atributos | Opcional. Expressão constante ou numérica, cuja soma especifica atributos de ficheiro. Se omitido, devolve ficheiros que correspondem ao nome do caminho , mas não têm atributos. |
Definições
As configurações de argumento de atributossão:
| Constante | Valor | Descrição |
|---|---|---|
| vbNormal | 0 | (Predefinição) Especifica arquivos sem atributos. |
| vbReadOnly | 1 | Especifica arquivos somente leitura, além de arquivos sem atributos. |
| vbHidden | 2 | Especifica arquivos ocultos, além de arquivos sem atributos. |
| VbSystem | 4 | Especifica arquivos do sistema, além dos arquivos sem atributos. Não está disponível no Macintosh. |
| vbVolume | 8 | Especifica o rótulo do volume; se qualquer outra atribuída for especificada, vbVolume será ignorado. Não está disponível no Macintosh. |
| vbDirectory | 16 | Especifica diretórios ou pastas além de arquivos 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 seu código em vez dos valores reais.
Observações
No Microsoft Windows, Dir suporta a utilização de carateres universais de múltiplos carateres (*) e carateres únicos (?) para especificar vários 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 carateres universais, utilize o tipo de ficheiro para identificar grupos de ficheiros. Você pode usar a função MacID para especificar o tipo de arquivo em vez de usar os nomes de arquivo. Por exemplo, a instrução seguinte devolve o nome do primeiro ficheiro TEXT na pasta atual:
Dir("SomePath", MacID("TEXT"))
Para iterar todos os ficheiros numa pasta, especifique uma cadeia de carateres vazia:
Dir("")
Se utilizar a função MacID com Dir no Windows, ocorre um erro.
Qualquer valor de atributo superior a 256 é considerado um valor MacID .
Você deve especificar pathname na primeira vez que chamar a função Dir , ou ocorre um erro. Se você também especificar atributos de arquivo, pathname deverá ser incluído.
Dir retorna o primeiro nome de arquivo que corresponde a pathname. Para obter quaisquer nomes de ficheiro adicionais que correspondam ao nome do caminho, chame Dir novamente sem argumentos. Quando não corresponderem mais nomes de ficheiros, Dir devolve uma cadeia de comprimento zero (""). Depois que uma cadeia de comprimento zero é retornada, você deve especificar pathname em chamadas subsequentes ou ocorre um erro. Você pode alterar para um novo nome de caminho sem recuperar todos os nomes de arquivo que correspondem ao nome do caminho atual. No entanto, não é possível chamar a função Dir recursivamente. Chamar Dir com o atributo vbDirectory não retorna continuamente subdiretórios.
Sugestão Como os nomes de arquivo não são recuperados em nenhuma ordem específica, convém armazenar os nomes de arquivo retornados em uma matriz e, em seguida, classificar 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 usa a função Dir para verificar se determinados arquivos e diretórios existem. No Macintosh, "HD:" é o nome de unidade predefinido e 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