Obs!: Funktionen, metoden, objektet eller egenskapen som beskrivs i det här avsnittet inaktiveras om Microsoft Jet Expression Service körs i begränsat läge, vilket förhindrar utvärderingen av potentiellt osäkra uttryck. Om du vill ha mer information om begränsat läge söker du efter "begränsat läge" i hjälpen.
Returnerar en sträng som representerar namnet på en fil, en katalog eller en mapp som matchar ett visst mönster eller ett filattribut, eller volymetiketten för en hårddisk.
Syntax
Dir[(sökväg [, attribut] )]
Dir-funktionens syntax har följande argument:
Argument |
Beskrivning |
sökväg |
Valfritt. Stränguttryck som anger ett filnamn – kan innehålla katalog eller mapp och enhet. En nollängdssträng ("") returneras om sökväg inte hittas. |
attribut |
Valfritt. Konstant eller numeriskt uttryck vars summa anger filattributen. Om det utelämnas returnerar filer som matchar sökväg men har inga attribut. |
Inställningar
Inställningarna för attributargument är:
Konstant |
Värde |
Beskrivning |
vbNormal |
0 |
(Standard) Anger filer som saknar attribut. |
vbReadOnly |
1 |
Anger skrivskyddade filer utöver filer som saknar attribut. |
vbHidden |
2 |
Anger dolda filer utöver filer som saknar attribut. |
VbSystem |
4 |
Anger systemfiler utöver filer som saknar attribut. Inte tillgängligt på Mac-datorer. |
vbVolume |
8 |
Anger volymetikett; om någon annan attribut anges ignoreras vbVolume . Inte tillgängligt på Mac-datorer. |
vbDirectory |
16 |
Anger kataloger eller mappar utöver filer utan attribut. |
vbAlias |
64 |
Filnamnet är ett alias. Endast tillgängligt på Mac-datorer. |
Obs!: Dessa konstanter definieras av Visual Basic for Applications (VBA) och kan användas var som helst i koden i stället för faktiska värden.
Anmärkningar
Dir stöder användning av jokertecken som består av flera (*) eller ett (?) tecken för att ange flera filer i Microsoft Windows. På Macintosh behandlas dessa som giltiga filnamnstecken och kan inte användas som jokertecken för att ange flera filer.
Använd filtypen för att identifiera grupper med filer eftersom Macintosh-datorer inte stöder jokertecken. Du kan använda MacID-funktionen för att ange filtyp i stället för att använda filnamnen. Följande uttryck returnerar till exempel namnet på den första TEXT-filen i den aktuella mappen:
Dir("SomePath", MacID("TEXT"))
Om du vill upprepa för alla filerna i mappen anger du en tom sträng:
Dir("")
Ett fel inträffar om du använder MacID-funktionen medDir i Windows.
Attribut -värden som är större än 256 betraktas som ett MacID-värde.
Du måste ange sökväg första gången du anropar Dir-funktionen, annars uppstår ett fel. Om du även anger filattribut måste sökväg inkluderas.
Dir returnerar det första filnamnet som matchar sökväg. Om du vill få ytterligare filnamn som matchar sökväg anropar du Dir en gång till utan argument. När inga fler filnamn matchar returnerar Dir en sträng med längden noll (""). När en nollängdssträng returneras måste du ange sökväg i efterföljande anrop, annars inträffar ett fel. Du kan ändra till en ny sökväg utan att hämta alla filnamn som matchar den aktuella sökvägen. Däremot kan du inte anropa Dir-funktionen rekursivt. Om du anropar Dir med vbDirectory-attributet returneras inte undermappar kontinuerligt.
Tips Eftersom filnamn inte hämtas i en särskild ordning bör du funderar på att lagra filnamnen i en matris och sedan sortera matrisen.
Exempel
Obs!: I exemplen nedan visar vi hur du använder den här funktionen i en Visual Basic for Applications-modul (VBA). Om du vill läsa mer om hur man använder VBA, kan du välja Info för utvecklare i listrutan bredvid Sök och sedan skriva en eller flera söktermer i sökrutan.
I det här exemplet används Dir-funktionen för att kontrollera om vissa filer och kataloger finns. På Macintosh-datorer är "HD:" standardnamnet på enheten och delar av sökvägen avgränsas med kolon istället för omvända snedstreck. Dessutom betraktas Windows-jokertecken som giltiga tecken i filnamn på Macintosh-datorer. Du kan däremot använda MacID-funktionen för att ange grupper med filer.
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