הפונקציה Dir

חל על
Access של Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

הערה

הפונקציה, פעולת השירות, האובייקט או המאפיין המתוארים בנושא זה אינם זמינים אם Microsoft Jet Expression Service פועל במצב ארגז חול (Sandbox), דבר שמונע הערכה של ביטויים שעלולים להיות לא בטוחים. לקבלת מידע נוסף על מצב ארגז חול, חפש "מצב ארגז חול" בעזרה.

החזרת מחרוזת המייצגת את השם של קובץ, ספריה או תיקיה התואמים לתבנית או לתכונת קובץ שצוינו, או לתווית אמצעי האחסון של כונן.

תחביר

Dir[(pathname [, attributes] )]

תחביר הפונקציה Dir מכיל את הארגומנטים הבאים:

ארגומנט תיאור
שם נתיב אופציונלי. ביטוי מחרוזת המציין שם קובץ — עשוי לכלול ספריה או תיקיה וכונן. אם pathname לא נמצא, מוחזר מחרוזת באורך אפס ("").
תכונות אופציונלי. ביטוי קבוע או מספרי, שהסכום שלו מציין תכונות קובץ. אם הוא מושמט, מחזיר קבצים התואמים ל- pathname אך ללא תכונות.

    

הגדרות

הגדרות הארגומנט של התכונותהן:

קבוע Value תיאור
vbNormal 0 (ברירת מחדל) מציין קבצים ללא תכונות.
vbReadOnly 1 מציין קבצים לקריאה בלבד בנוסף לקבצים ללא תכונות.
vbמוסתר 2 מציין קבצים מוסתרים בנוסף לקבצים ללא תכונות.
מערכת Vb 4 מציין קבצי מערכת בנוסף לקבצים ללא תכונות. לא זמין במחשב Macintosh.
vbVolume 8 מציין תווית נפח; אם צוין כל מיוחס אחר, הפונקציה מתעלמת מ - VBVOLUME . לא זמין במחשב Macintosh.
vbDirectory 16 מציין ספריות או תיקיות בנוסף לקבצים ללא תכונות.
vbAlias 64 שם הקובץ שצוין הוא כינוי. זמין במקינטוש בלבד.

    

הערה

קבועים אלה מוגדרים על-ידי Visual Basic for Applications (VBA) וניתן להשתמש בהם בכל מקום בקוד במקום הערכים בפועל.

הערות

ב- Microsoft Windows, Dir תומך בשימוש בתווים כלליים מרובים (*) ותו בודד (?) כדי לציין קבצים מרובים. ב- Macintosh, תווים אלה נחשבים לתווי שם קובץ חוקיים ולא ניתן להשתמש בהם כתווים כלליים לציון קבצים מרובים.

מאחר ש- Macintosh אינו תומך בתווים הכלליים, השתמש בסוג הקובץ כדי לזהות קבוצות של קבצים. באפשרותך להשתמש בפונקציה MacID כדי לציין סוג קובץ במקום להשתמש בשמות הקבצים. לדוגמה, המשפט הבא מחזיר את השם של קובץ ה- TEXT הראשון בתיקיה הנוכחית:

Dir("SomePath", MacID("TEXT"))

כדי לחזור על כל הקבצים בתיקיה, ציין מחרוזת ריקה:

Dir("")

אם אתה משתמש בפונקציה MacID עם Dir ב- Windows, מתרחשת שגיאה.

כל ערך תכונות הגדול מ- 256 נחשב לערך MacID .

עליך לציין שם נתיב בפעם הראשונה שאתה קורא לפונקציה Dir , אחרת תתרחש שגיאה. אם תציין גם תכונות קובץ, יש לכלול את שם הנתיב .

הפונקציה Dir מחזירה את שם הקובץ הראשון התואם ל- pathname. כדי לקבל שמות קבצים נוספים התואמים ל - pathname, קרא שוב ל- Dir ללא ארגומנטים. כאשר אין שמות קובץ נוספים תואמים, הפונקציה Dir מחזירה מחרוזת באורך אפס (""). לאחר החזרת מחרוזת באורך אפס, עליך לציין שם נתיב בקריאות הבאות, אחרת תתרחש שגיאה. באפשרותך לשנות לשם נתיב חדש מבלי לאחזר את כל שמות הקבצים התואמים לשם הנתיב הנוכחי. עם זאת, לא ניתן לקרוא לפונקציה Dir באופן רקורסיבי. קריאה ל - Dir עם התכונה vbDirectory אינה מחזירה ספריות משנה באופן רציף.

עצה מאחר ששמות קבצים מאוחזרים ללא סדר מסוים, מומלץ לאחסן את שמות הקבצים המוחזרים במערך ולאחר מכן למיין את המערך.

דוגמה

הערה

הדוגמאות הבאות מדגימות את השימוש של פונקציה זו במודול Visual Basic for Applications‏ (VBA). לקבלת מידע נוסף אודות עבודה עם VBA, בחר הפניית מפתח ברשימה הנפתחת שליד חיפוש והזן מונח אחד או יותר בתיבת החיפוש.

דוגמה זו משתמשת בפונקציה Dir כדי לבדוק אם קבצים וספריות מסוימים קיימים. ב- Macintosh, "HD:" הוא שם הכונן המוגדר כברירת מחדל וחלקים משם הנתיב מופרדים באמצעות נקודתיים במקום קו נטוי הפוך. כמו כן, התווים הכלליים של Windows מטופלים כתווים חוקיים של שם קובץ ב- Macintosh. עם זאת, באפשרותך להשתמש בפונקציה MacID כדי לציין קבוצות קבצים.

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