السلام عليكم ورحمة الله وبركاته
إخواني وأحبابي في الله
أحاول الخروج من حالة الإحباط التي تعتريني ، لذا سأحاول تقديم موضوع قد يفيد شريحة كبيرة من الناس وهو موضوع مطلوب ، وسأحاول تقديمه وتبسيطه بشكل كبير بحيث يسهل تطبيقه ويسهل فهمه.
الموضوع يتركز على كيفية عمل قائمة بأسماء الملفات في مسار محدد ، وسأقوم بوضع خطوات لتطبيق الطريقة بأنفسكم
**
الخطوة الأولى : ضع المسار للمجلد الذي تريد عمل قائمة بأسماء الملفات فيه ، وفي نهاية المسار ضع علامة النجمة ليقوم بالتعامل مع كل أنواع الملفات الموجودة في ذلك المسار
مثال حتى تتضح الرؤية ، نفترض أن لدي ملفات في البارتشن C وأريد عمل قائمة بأسماء هذه الملفات ، لذا أضع المسار بهذا الشكل في الخلية A1 في ورقة العمل Sheet1
اكتب رمز البارتشن C يليه نقطتين : ثم الباك سلاش ثم أضع علامة النجمة
CODE
C:*<br />
**
الخطوة الثانية : نقوم بعمل نطاق معرف من خلال التبويب Formulas ثم Name Manager ثم نضغط على New ثم نكتب اسم النطاق المعرف بأي اسم معبر وليكن FilesList في حقل الـ Name ، ثم نستخدم المعادلة التالية في حقل الـ Refers to
CODE
=FILES(Sheet1!$A$1)<br />
والمعادلة كما تلاحظون بسيطة وهي استخدام لدالة اسمها FILES يليها عنوان الخلية التي بها المسار ، وهنا حددنا ورقة العمل Shee1 في الخلية A1 ، وهي الخلية التي وضعنا بها المسار في الخطوة الأولى.
**
الخطوة الثالثة : في الخلية A2 سنقوم بوضع اسم أول ملف باستخدام المعادلات
هنا ننتبه إلى أن ناتج اسم النطاق الذي قمنا بتعريفه FilesList عبارة عن مصفوفة من أسماء الملفات وللتأكد من ذلك نقوم بكتابة اسم النطاق المعرف بعد علامة يساوي ثم نحدد الجزء في المعادلة الذي فيه اسم النطاق المعرف ونضغط F9
نضعط F9 وسنرى أسماء الملفات كمصفوفة بهذا الشكل
من هنا تأتي فكرة استخدام دالة Index للحصول على اسم أول ملف بهذه المعادلة
CODE
=INDEX(FilesList,1)<br />
ويمكن في المعادلة استبدال الرقم 1 برقم الصف بحيث عندما يتم سحب المعادلة لأسفل يجلب جميع أسماء الملفات (الملف رقم 1 ، والملف رقم 2 ، والملف رقم 3 وهكذا ..)
وهذه الخدعة ببساطة يمكن عملها باستخدام الدالة Row التي تجلب رقم الصف
وبما أننا في الخلية A2 أي في الصف الثاني سنقوم بطرح واحد لنحصل على أول ملف وتصبح المعادلة بهذا الشكل
CODE
=INDEX(FilesList,ROW()-1)<br />
ثم نقوم أخيراً بسحب المعادلة لأسفل ...
انتبه أنه عندما تنتهي الملفات ولا يوجد ملفات ستظهر المعادلة خطأ REF
لذا من الأفضل وضع دالة تعالج الخطأ المحتمل وهي دالة IfError بهذا الشكل
CODE
=IFERROR(INDEX(FilesList,ROW()-1),"")
وهذا هو الشكل النهائي بعد سحب المعادلة لأسفل
*** استكمالاً للفائدة إليكم كود بسيط يمكنك من اختيار المجلد أو المسار المطلوب عمل قائمة بأسماء الملفات منه ، حيث يقوم الكود بوضع المسار الذي تحدده في الخلية A1 بدلاً من كتابة المسار بشكل يدوي
CODE
Sub Get_Directory_Path_Application_FileDialog()
Dim sFile As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show <> 0 Then sFile = .SelectedItems(1)
Worksheets("Sheet1").Cells(1, 1).Value = sFile & "*"
End With
End Sub
رابط الملف المرفق من هنا
أرجو أن يكون الموضوع ذات أهمية وإفادة لكم
وتقبلوا وافر تقديري واحترامي
أخوكم في الله / ياسر خليل أبو البراء