كيف يمكن سرد جميع المجلدات والمجلدات الفرعية في Excel؟
عند إدارة الملفات والمجلدات، قد تحتاج إلى الحصول بسرعة على قائمة شاملة بكل المجلدات والمجلدات الفرعية داخل دليل معيّن وعرضها مباشرةً في Excel. وللأسف، لا يوفّر Excel دالةً مدمجةً أو معالجًا بسيطًا لاسترجاع جميع المجلدات والمجلدات الفرعية تلقائيًّا من مسار ملف معيّن. يقدم هذا المقال كود VBA يمكّنك من سرد كل المجلدات والمجلدات الفرعية من أي دليل تختاره مباشرةً في ورقة العمل الخاصة بك، مما يقلل احتمالية الخطأ البشري ويُلغي المهام المرهقة، ويساعدك على تتبع هيكلة بياناتك وإدارتها بكفاءة وسرعة.
استخدام كود VBA لسرد جميع المجلدات والمجلدات الفرعية
استخدام كود VBA لسرد جميع المجلدات والمجلدات الفرعية
إذا كنت ترغب في استخراج وعرض جميع المجلدات والمجلدات الفرعية من دليل معيّن في Excel، فإن استخدام VBA (Visual Basic for Applications) يُعد حلاً فعّالًا. توفر هذه الطريقة مرونةً عاليةً وتحكّمًا دقيقًا، إذ لا تقتصر على جلب أسماء المجلدات فحسب، بل تمتد لتشمل معلومات إضافية مثل مسار الملف، وتاريخ الإنشاء، وتاريخ آخر تعديل. وهي مثالية خصوصًا للمستخدمين المتمرسين على أدوات مطوّر Excel والذين يتعاملون مع أنظمة ملفات ديناميكية أو تتغير باستمرار.
1. اضغطALT + F11 لفتح محرر "Microsoft Visual Basic for Applications". تُمكّنك هذه الأداة من إضافة وتحرير الواجهات البرمجية (الميكرو) داخل ملف العمل الخاص بك.
2. في محرر VBA، انقر فوقإدراج > وحدة نمطية (Module). سيؤدي ذلك إلى إنشاء نافذة وحدة نمطية جديدة. انسخ الكود التالي والصقه في الوحدة:
كود VBA: سرد جميع المجلدات والمجلدات الفراسم المجلدية
Sub FolderNames()
'Updateby Extendoffice
Application.ScreenUpdating = False
Dim xPath As String
Dim xWs As Worksheet
Dim fso As Object, j As Long, folder1 As Object
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Choose the folder"
.Show
End With
On Error Resume Next
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\"
Application.Workbooks.Add
Set xWs = Application.ActiveSheet
xWs.Cells(1, 1).Value = xPath
xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified")
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder1 = fso.getFolder(xPath)
getSubFolder folder1
xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535
xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
Sub getSubFolder(ByRef prntfld As Object)
Dim SubFolder As Object
Dim subfld As Object
Dim xRow As Long
For Each SubFolder In prntfld.SubFolders
xRow = Range("A1").End(xlDown).Row + 1
Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder.DateLastModified)
Next SubFolder
For Each subfld In prntfld.SubFolders
getSubFolder subfld
Next subfld
End Sub
3. بعد إدخال الكود، اضغطF5 أو انقر زرتشغيل (Run)في محرر VBA لتنفيذ الواجهة البرمجية. ستظهر نافذة حواراختر المجلدلمطالبتك باختيار الدليل المستهدف الذي ترغب في فحصه للبحث عن المجلدات والمجلدات الفرعية.

4. حدد الدليل المطلوب، ثم انقر فوقموافق (OK). ستقوم الواجهة البرمجية بمعالجة الدليل وتوليد قائمة دفتر عمل جديد يحتوي على جميع المجلدات والمجلدات الفرعية مع مساراتها الكاملة، وأسمائها، وأسماء مجلداتها الأم المباشرة، وتواريخ إنشائها، وتواريخ آخر تعديل لها، كما هو موضح أدناه:

بعض النصائح العملية والملاحظات لاستخدام هذا الكود:
- إذا كانت بنية مجلداتك كبيرة جدًّا، فقد تستغرق الواجهة البرمجية (الميكرو) بعض الوقت لمعالجة جميع المجلدات. يُرجى التحلي بالصبر أثناء التنفيذ وتجنب مقاطعة العملية.
- تتطلب طريقة VBA تفعيل إعدادات الواجهات البرمجية (الميكرو) لديك؛ وإلا فلن يعمل الكود كما يجب. إذا ظهرت لك تحذيرات أمنية، فتأكد من ضبط إعدادات مركز الثقة في خيارات Excel.
- إذا اخترتَ عن غير قصد مجلدًا خاطئًا، فما عليك سوى إعادة تشغيل الواجهة البرمجية واختيار الدليل الصحيح.
- تعرض هذه الطريقة معلومات المجلدات والمجلدات الفرعية فقط؛ فإذا كنت بحاجة إلى تضمين الملفات أيضًا، فاطّلع على المقال ذي الصلة أدناه لمزيد من الخيارات.
- إذا كان هناك عدة مستخدمين يشاركون نفس ملف العمل، فذكّرهم بأنه يجب تفعيل الواجهات البرمجية (الميكرو) على أجهزتهم لاستخدام وظيفة القوائم الديناميكية هذه.
- إذا كان ملف العمل الناتج فارغًا أو غير مكتمل، فتأكد من أن الدليل المحدد ليس فارغًا وأن لديك أذونات قراءة كافية. وبالنسبة لهياكل المجلدات العميقة أو المعقدة جدًّا، راجع حدود موارد النظام لديك، وفكّر في معالجة المجلدات على دفعات أو معالجة كل مجلد فرعي على حدة عند الحاجة.
يتميّز حل VBA هذا بالمرونة، ولا يتطلب أي إضافات أو برامج خارجية، كما يُنشئ تلقائيًّا ملف عمل خرج لراحتك. ومع ذلك، فهو الأنسب للمستخدمين الملمّين بعمليات الواجهات البرمجية الأساسية، وقد يحتاج إلى بعض التعديلات الإضافية لتلبية متطلبات مخصصة معيّنة.
مقال ذو صلة:
كيف يمكن سرد الملفات الموجودة في دليل معين في ورقة عمل Excel؟
أفضل أدوات الإنتاجية لمكتبتك
عزِّز مهاراتك في Excel باستخدام Kutools لـ Excel، وعايش الكفاءة كما لم تفعل من قبل.يقدّم Kutools لـ Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية ووقت الحفظ.انقر هنا للحصول على الميزة التي تحتاجها أكثر من غيرها...
يجلب Office Tab واجهة ذات علامات تبويب إلى Office، ويجعل عملك أسهل بكثير
- تمكّن من التحرير والقراءة باستخدام علامات التبويب في Word وExcel وPowerPoint، وPublisher وAccess وVisio وProject.
- افتح وأنشئ مستندات متعددة في علامات تبويب جديدة داخل النافذة نفسها، بدلاً من فتح نوافذ جديدة.
- يزيد إنتاجيتك بنسبة 50% ويوفّر لك مئات نقرات الفأرة كل يوم!
جميع الإضافات من Kutools في برنامج تثبيت واحد!
Kutools for Office حزمةٌ تحتوي على إضافاتٍ مخصصة لتطبيقات Excel وWord وOutlook وPowerPoint، إلى جانب Office Tab Pro، مما يجعلها الخيار المثالي للفِرق التي تعمل عبر تطبيقات Office.
- حزمة شاملة واحدة— إضافات Excel وWord وOutlook وPowerPoint بالإضافة إلى Office Tab Pro
- برنامج تثبيت واحد، ترخيص واحد— الإعداد خلال دقائق (جاهز لـ MSI)
- يعمل بشكل أفضل معًا— إنتاجية ميسَّرة عبر تطبيقات Office
- تجربة مجانية لمدة 30 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل