הערה: הפונקציה, פעולת השירות, האובייקט או המאפיין המתוארים בנושא זה אינם זמינים אם שירות הביטויים של Microsoft Jet פועל במצב ארגז חול (Sandbox) שמונע הערכה של ביטויים שעלולים להיות לא בטוחים. לקבלת מידע נוסף על מצב ארגז חול, חפש את "מצב ארגז חול" בעזרה.
החזרת מחרוזת המייצגת את השם של קובץ, ספריה או תיקיה התואמים לתבנית או לתכונת קובץ שצוינו, או לתווית אמצעי האחסון של כונן.
תחביר
Dir[(pathname [, attributes] )]
תחביר הפונקציה Dir מכיל את הארגומנטים הבאים:
ארגומנט |
תיאור |
שם נתיב |
אופציונלי. ביטוי מחרוזת המציין שם קובץ - עשוי לכלול ספריה או תיקיה וכונן. מחרוזת באורך אפס ("") מוחזרת אם pathname לא נמצא. |
תכונות |
אופציונלי. Constant או ביטוי מספרי, שהסכום שלו מציין תכונות קובץ. אם הוא מושמט, החזרת קבצים התואמים ל- pathname אך אינם מכילים תכונות. |
הגדרות
התכונות ארגומנט הן:
קבוע |
Value |
Description |
vb לא נורמלית |
0 |
(ברירת מחדל) מציין קבצים ללא תכונות. |
vbReadOnly |
1 |
מציין קבצים לקריאה בלבד בנוסף לקבצים ללא תכונות. |
vbהנסתרת |
2 |
מציין קבצים מוסתרים בנוסף לקבצים ללא תכונות. |
VbSystem |
4 |
מציין קבצי מערכת בנוסף לקבצים ללא תכונות. לא זמין ב- Macintosh. |
vbVolume |
8 |
מציין תווית אמצעי אחסון; אם צוינה תכונה אחרת, הפונקציה תתעלם מ- vbVolume . לא זמין ב- Macintosh. |
vbDirectory |
16 |
מציין ספריות או תיקיות בנוסף לקבצים ללא תכונות. |
vbAlias |
64 |
שם הקובץ שצוין הוא כינוי. זמין רק ב- Macintosh. |
הערה: קבועים אלה מצוינים על-ידי Visual Basic for Applications (VBA) ובאפשרותך להשתמש בהם בכל מקום בקוד במקום הערכים בפועל.
הערות
ב- Microsoft Windows, Dir תומך בשימוש בתווים כלליים של תווים מרובים (*) ותווים יחידים (?) כדי לציין קבצים מרובים. ב- Macintosh, תווים אלה נחשבים לתווים חוקיים של שם קובץ ולא ניתן להשתמש בהם כתווים כלליים כדי לציין קבצים מרובים.
מאחר ש- Macintosh אינו תומך בתווים הכלליים, השתמש בסוג הקובץ כדי לזהות קבוצות של קבצים. באפשרותך להשתמש בפונקציה MacID כדי לציין סוג קובץ במקום להשתמש בשמות הקבצים. לדוגמה, המשפט הבא מחזיר את השם של קובץ ה- TEXT הראשון בתיקיה הנוכחית:
Dir("SomePath", MacID("TEXT"))
כדי לאחזר על כל הקבצים בתיקיה, ציין מחרוזת ריקה:
Dir("")
אם אתה משתמש בפונקציה MacID עם Dir ב - Windows, תתרחש שגיאה.
כל ערך התכונות הגדול מ- 256 נחשב לערך MacID .
עליך לציין pathname בפעם הראשונה שאתה קורא לפונקציה Dir , או שמתרחשת שגיאה. אם תציין גם תכונות קובץ, יש לכלול את pathname .
Dir מחזיר את שם הקובץ הראשון התואם לשם הנתיב. כדי לקבל שמות קבצים נוספים התואמים לשם הנתיב, התקשר שוב ל- 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