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