Notă: Funcția, metoda, obiectul sau proprietatea descrise în acest subiect este dezactivată dacă Serviciul de expresii Microsoft Jet rulează în modul sandbox, ceea ce împiedică evaluarea expresiilor potențial nesigure. Pentru mai multe informații despre modul sandbox, căutați "modul sandbox" în Ajutor.
Returnează un șir de caractere care reprezintă numele unui fișier, director sau folder care corespunde unui anumit model sau atribut de fișier sau eticheta de volum a unei unități.
Sintaxă
Dir[(nume pathname [, atribute] )]
Sintaxa funcției Dir are următoarele argumente:
Argument |
Descriere |
Pathname |
Opțional. Expresia șir care specifică un nume de fișier - poate include directorul sau folderul și unitatea. Se returnează un șir de lungime zero ("") dacă numele căii nu este găsit. |
Atribute |
Opțional. Constantă sau expresie numerică, a căror sumă specifică atributele fișierului. Dacă este omisă, returnează fișiere care se potrivesc cu numele căii , dar nu au atribute. |
Setări
Setărileargumentatribute sunt:
Constantă |
Valoare |
Descriere |
vbNormal |
0 |
(Implicit) Specifică fișierele fără atribute. |
vbReadOnly |
1 |
Specifică fișierele doar în citire, în plus față de fișierele fără atribute. |
vbHidden |
2 |
Specifică fișierele ascunse, în plus față de fișierele fără atribute. |
VbSystem |
4 |
Specifică fișierele de sistem, în plus față de fișierele fără atribute. Nu este disponibil pe Macintosh. |
vbVolume |
8 |
Specifică eticheta de volum; dacă se specifică orice alt atribut, vbVolume este ignorat. Nu este disponibil pe Macintosh. |
vbDirectory |
16 |
Specifică directoarele sau folderele, în plus față de fișierele fără atribute. |
vbAlias |
64 |
Numele de fișier specificat este un alias. Disponibil doar pe Macintosh. |
Notă: Aceste constante sunt specificate de Visual Basic for Applications (VBA) și pot fi utilizate oriunde în cod în locul valorilor reale.
Observații
În Microsoft Windows, Dir acceptă utilizarea caracterelor wildcard multiple (*) și a caracterelor unice (?) pentru a specifica mai multe fișiere. Pe Macintosh, aceste caractere sunt tratate ca caractere valide de nume de fișier și nu pot fi utilizate ca metacaractere pentru a specifica mai multe fișiere.
Deoarece Macintosh nu acceptă caracterele wildcard, utilizați tipul de fișier pentru a identifica grupuri de fișiere. Puteți utiliza funcția MacID pentru a specifica tipul de fișier în loc să utilizați numele fișierelor. De exemplu, următoarea instrucțiune returnează numele primului fișier TEXT din folderul curent:
Dir("SomePath", MacID("TEXT"))
Pentru a itera peste toate fișierele dintr-un folder, specificați un șir gol:
Dir("")
Dacă utilizați funcția MacID cu Dir în Windows, apare o eroare.
Orice valoare de atribute mai mare decât 256 este considerată o valoare MacID .
Trebuie să specificați numele căii prima dată când apelați funcția Dir sau apare o eroare. Dacă specificați și atributele de fișier, numele căii trebuie să fie inclus.
Dir returnează primul nume de fișier care se potrivește cu numele căii. Pentru a obține orice nume de fișier suplimentare care se potrivesc cu numele căii, apelați Dir din nou fără argumente. Atunci când nu se mai potrivesc nume de fișiere, Dir returnează un șir de lungime zero (""). După ce este returnat un șir de lungime zero, trebuie să specificați numele căii în apelurile ulterioare sau să apară o eroare. Puteți schimba la un nume de cale nou fără a regăsi toate numele de fișiere care se potrivesc cu numele de cale curent. Totuși, nu puteți apela funcția Dir recursiv. Apelarea Dir cu atributul vbDirectory nu returnează continuu subdirectorii.
Sfat Deoarece numele de fișiere nu sunt regăsite într-o anumită ordine, se recomandă să stocați numele de fișiere returnate într-o matrice, apoi să sortați matricea.
Exemplu
Notă: Exemplele care urmează demonstrează utilizarea acestei funcții într-un modul Visual Basic for Applications (VBA). Pentru mai multe informații despre lucrul cu VBA, selectați Referințe pentru dezvoltatori în lista verticală de lângă Căutare și introduceți unul sau mai mulți termeni în caseta de căutare.
Acest exemplu utilizează funcția Dir pentru a verifica dacă există anumite fișiere și directoare. Pe Macintosh, "HD:" este numele implicit al unității și porțiunile numelui de cale sunt separate prin două puncte în loc de bare oblice inverse. De asemenea, caracterele wildcard Windows sunt tratate ca caractere nume de fișier valide pe Macintosh. Cu toate acestea, puteți utiliza funcția MacID pentru a specifica grupurile de fișiere.
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