ملاحظة
يتم تعطيل الوظيفة أو الطريقة أو العنصر أو الخاصية الموضحة في هذا الموضوع إذا كانت خدمة Microsoft Jet Expression Service قيد التشغيل في وضع الحماية، مما يمنع تقييم التعبيرات التي يحتمل أن تكون غير آمنة. لمزيد من المعلومات حول وضع الحماية، ابحث عن "وضع الحماية" في "تعليمات".
إرجاع سلسلة تمثل اسم ملف أو دليل أو مجلد يطابق نقشا محددا أو سمة ملف معينة، أو تسمية وحدة التخزين لمحرك أقراص.
بناء الجملة
Dir[(pathname [, attributes] )]
يحتوي بناء جملة الدالة Dir على الوسيطات التالية:
| الوسيطة | الوصف |
|---|---|
| اسم المسار | اختيارية. تعبير السلسلة الذي يحدد اسم الملف — قد يتضمن دليلا أو مجلدا ومحرك أقراص. يتم إرجاع سلسلة ذات طول صفري ("") إذا لم يتم العثور على اسم المسار . |
| السمات | اختيارية. ثابت أو تعبير رقمي، يحدد مجموعه سمات الملف. إذا تم حذفها، فسيتم إرجاع الملفات التي تتطابق مع اسم المسار ولكن ليس لها أي سمات. |
إعدادات
إعدادات وسيطة السماتهي:
| القيمة الثابتة | Value | الوصف |
|---|---|---|
| vbNormal | 0 | (افتراضي) يحدد الملفات بدون سمات. |
| vbReadOnly | 1 | يحدد ملفات للقراءة فقط بالإضافة إلى الملفات بدون سمات. |
| vbHidden | 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 .
يجب أن تحدد اسم المسار في المرة الأولى التي تستدعي فيها الدالة Dir ، وإلا فيحدث خطأ ما. إذا قمت أيضا بتحديد سمات الملف، فيجب تضمين اسم المسار .
ترجع 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