Note: The other languages of the website are Google-translated. Back to English

كيف تسرد جميع الملفات في المجلد والمجلدات الفرعية في ورقة عمل؟

هل سبق لك أن حاولت سرد جميع أسماء الملفات من مجلد في ورقة عمل بما في ذلك الملفات الموجودة داخل مجلداته الفرعية؟ في الواقع ، لا توجد طريقة مباشرة بالنسبة لنا لسرد أسماء الملفات من مجلد ومجلده الفرعي في Excel ، ومع ذلك ، سأقدم اليوم بعض الحيل السريعة لحل هذه المهمة.

أدرج جميع أسماء الملفات في المجلد والمجلد الفرعي برمز VBA

قم بإدراج جميع أسماء الملفات في مجلد ومجلد فرعي بسرعة وسهولة باستخدام Kutools for Excel


عادةً ، لا يحتوي Excel على ميزة مضمنة للتعامل مع هذه المهمة ، ولكن يمكنك تطبيق رمز VBA التالي لإكمال هذه المشكلة.

1. قم بتنشيط ورقة عمل جديدة تسرد أسماء الملفات.

2. اضغط باستمرار على ALT + F11 في Excel ، ويفتح ملف ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

3. انقر إدراج > وحدة، والصق الكود التالي في ملف نافذة الوحدة.

رمز فبا: سرد كافة أسماء الملفات في المجلد والمجلد الفرعي

Sub MainList()
'Updateby Extendoffice
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub
Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub
Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function

4. بعد لصق الرمز في الوحدة النمطية ، اضغط على F5 مفتاح لتشغيل هذا الرمز ، و وحدات الماكرو ينبثق مربع الحوار ، حدد ملف القائمة الرئيسية اسم الماكرو ، ثم انقر فوق موافق يجري زر ، انظر لقطة الشاشة:

doc list في المجلد الفرعي 1

5. وفي تصفح نافذة ، يرجى تحديد المجلد الذي تريد سرد جميع أسماء الملفات بما في ذلك المجلدات الفرعية ، انظر الصورة:

doc list في المجلد الفرعي 2

6. بعد تحديد المجلد ، انقر فوق OK الزر ، وجميع أسماء الملفات الموجودة في المجلد ومجلداته الفرعية مدرجة في ورقة العمل الحالية من الخلية A2 ، انظر لقطات الشاشة:

doc list في المجلد الفرعي 3
1
doc list في المجلد الفرعي 4

باستخدام الكود أعلاه ، يمكنك فقط سرد أسماء الملفات ، وفي بعض الأحيان ، تحتاج إلى سرد سمات أخرى ، مثل حجم الملف ونوع الملف ووقت الإنشاء والمجلد الذي يحتوي على وهكذا. كوتولس ل إكسيل يحتوي على وظيفة مفيدة - قائمة اسم الملف، باستخدام هذه الميزة ، يمكنك بسرعة سرد جميع أسماء الملفات أو أنواع معينة منها في مجلد ومجلداته الفرعية.

كوتولس ل إكسيل : مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود في أيام 30.

بعد تثبيت كوتولس ل إكسيل، برجاء اتباع الخطوات التالية:

1. انقر مشروع > استيراد و تصدير > قائمة اسم الملف، انظر لقطة الشاشة:

2. في قائمة اسم الملف في مربع الحوار ، قم بالعمليات التالية:

A: انقر doc list في المجلد الفرعي 7زر لاختيار المجلد الذي تريده لسرد أسماء الملفات ؛

B: حدد نوع الملف الذي تريد سرده من ملف نوع الملفات قسم.

C: حدد وحدة حجم ملف واحدة تريد عرضها من ملف وحدة حجم الملف والقسم الخاص به.

ملاحظة: لسرد أسماء الملفات من المجلد الفرعي ، يرجى التحقق تضمين الملفات في الدلائل الفرعية، يمكنك أيضًا التحقق من تشمل الملفات والمجلدات المخفية ما تحتاج إليه. إذا قمت بالتدقيق إنشاء ارتباطات تشعبية الخيار ، فإنه سيتم إنشاء ارتباطات تشعبية لكل أسماء الملفات والمجلدات.

تنزيل وتجربة مجانية الآن!

3. ثم اضغط OK الزر ، تم عرض كافة الملفات الموجودة في المجلد المحدد ومجلداته الفرعية بالسمات التالية في ورقة عمل جديدة. انظر لقطة الشاشة:

doc list في المجلد الفرعي 8

انقر لمعرفة المزيد من التفاصيل حول هذه الأداة المساعدة لقائمة اسم الملف.

قم بتنزيل Kutools for Excel والإصدار التجريبي المجاني الآن!


كوتولس ل إكسيل: مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود خلال 30 يومًا. تنزيل وتجربة مجانية الآن!

أفضل أدوات إنتاجية المكتب

Kutools for Excel يحل معظم مشاكلك ويزيد إنتاجيتك بنسبة 80٪

  • إعادة استخدام: أدخل بسرعة الصيغ المعقدة والرسوم البيانية وأي شيء استخدمته من قبل ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة دون فقدان البيانات ؛ تقسيم محتوى الخلايا ؛ ادمج الصفوف / الأعمدة المكررة... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • أكثر من 300 ميزة قوية. يدعم Office / Excel 2007-2021 و 365. يدعم جميع اللغات. سهولة النشر في مؤسستك أو مؤسستك. الميزات الكاملة نسخة تجريبية مجانية لمدة 30 يومًا. ضمان استرداد الأموال لمدة 60 يومًا.
علامة تبويب kte 201905

يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (20)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مقال جيد شكرا: د
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عزيزي شكرا على هذه الأداة الرائعة ..... !!! أنيل كومار
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف يعمل هذا الاستعلام للحصول على الملفات المدرجة في الخلية B2 بدلاً من A2؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ساتيش
يمكن أن يساعدك الكود التالي في وضع أسماء الملفات في أي خلية حددتها ، يرجى تجربتها:

القائمة الرئيسية الفرعية ()
على خطأ استئناف التالي
تعيين xRg = Application.InputBox ("الرجاء تحديد خلية لوضع أسماء الملفات :" ، "KuTools For Excel" ، Selection.Address ، ، ، ، ، 8)
إذا كان xRg لا شيء ، فاخرج من Sub
تعيين xRg = xRg (1)
تعيين مجلد = Application.FileDialog (msoFileDialogFolderPicker)
إذا كان المجلد يظهر <> -1 ثم قم بالخروج من البرنامج الفرعي
xDir = Folder.SelectedItems (1)
قائمة المكالمات - FileInFolder (xRg، xDir، True)
نهاية الفرعية
القائمة الفرعية ، الملفات ، المجلد (ByVal xRg كنطاق ، ByVal xFolderName كسلسلة ، ByVal xIs ، المجلدات الفرعية كـ Boolean)
خافت xFileSystemObject ككائن
خافت xFolder ككائن
خافت xSubFolder ككائن
خافت xFile ككائن
صف خافت فهرسة طويلة
تعيين xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
تعيين xFolder = xFileSystemObject.GetFolder (xFolderName)
rowIndex = 1
لكل xFile في xFolder.Files
xRg.Formula = xFile.Name
تعيين xRg = xRg.Offset (rowIndex)
rowIndex = 1
التالي xFile
إذا كانت المجلدات الفرعية xIsSubfolders ثم
لكل xSubFolder في xFolder.SubFolders
ListFilesInFolder xRg و xSubFolder.Path و True
التالي xSubFolder
إنهاء حالة
تعيين xFile = لا شيء
تعيين xFolder = لا شيء
تعيين xFileSystemObject = لا شيء
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عظيم!!! أحبه شكرا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لست متأكدا .. لكنه يعتبر مجلدات طويلة. لقد كتبت رمزًا مشابهًا وفشل حيث يتجاوز مسار المجلد / الملف 256 حرفًا؟ خواطر ارجوك؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرا جزيلا على المقال المفيد لك!
كيف يمكنني تحديث القائمة تلقائيًا وتحديد التغييرات؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
ساعدني هذا في تحويل الكود الخاص بي للحصول على المكالمة العودية ، لكنني أتساءل عن الطريقة التي تستخدم بها الكائنات. أفضل تعريف الكائنات الخاصة بي كما هي ، سواء كانت مصنفات أو أوراق عمل أو كائنات نظام الملفات. (خافت wbDest مثل excel.workbook ، خافت wsDest مثل excel.worksheet على سبيل المثال. بهذه الطريقة لا داعي للقلق أبدًا بشأن ماهية الورقة النشطة.

تساءلت أيضًا عن استخدام .show - if.show <> - 1 ، ولا يسعني إلا الشعور بأنه سيكون من الأسهل على الأشخاص فهم ما إذا كنت تستخدم if.show = false بدلاً من ذلك.

وفيما يتعلق بالكتابة إلى الوجهة ، شعرت أن استخدام الخلايا والصيغة بدا بعيد المنال

في الكود لدي ، على سبيل المثال ،
wsDest.Range ("B" & CurRow) = fil.name
(CurRow = الصف الحالي)

أنا لا أنتقد ، فقط أتساءل عما إذا كنت تفعل ذلك على هذا النحو لأي سبب بخلاف التفضيل الشخصي. - دائما على استعداد للتعلم


لكن بصرف النظر عن ذلك شكرا للمساعدة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرًا لك على هذا الرمز ، فقد ساعدني في طلب عمل ، وأنا الآن قادر على استيراد هذه النتائج إلى Access لمزيد من التحول.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لا يتم استخدام "GetFileOwner ()" الفرعي في التعليمات البرمجية أعلاه.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ، Jumpjack ،
يعمل الكود أعلاه بشكل جيد في برنامج Excel ، ما هو إصدار Excel الذي تستخدمه؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
Extremamente elegante este código!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
ما هو الغرض من المعلمة ByVal xIsSubfolders As Boolean؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يقول VBA الخاص بي أن المجلد المتغير غير محدد. أي شخص يعرف لماذا هذا؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
جديد حقًا في VBA. كيف يمكنني استخدام الكود أعلاه مع تضمين مسار الملف فيه حتى لا أضطر إلى البحث عنه في كل مرة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، إذا كان عليّ فقط استخراج امتداد من القائمة بأكملها ، فأين يجب أن أجري التغييرات؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل تعمل على MAC أيضًا؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد قمت بتعديل الكود الخاص بك لجعله يعيد تدويره وأعد تشغيل مربع حوار المجلد بشكل مستمر حتى تضغط على إلغاء. إذا تم تضمين المجلدات الفرعية في مجلد محدد ، فسيصبح المجلد المحدد التالي خارج الترتيب العددي. إذا أصبحت المجلدات الفرعية متضمنة في مجلد محدد ، فيجب تكرار الزر "إلغاء" وتكرار ذلك بناءً على عدد المجلدات التي أضفتها.
رمز:
القائمة الرئيسية الفرعية ()
'تحديث بواسطة Extendoffice
تعيين المجلد = Application.FileDialog (msoFileDialogFolderPicker)
إذا كان المجلد يظهر <> -1 ثم قم بالخروج من الملف الفرعي
xDir = folder.SelectedItems (1)
قائمة المكالمات - FileInFolder (xDir، True)
End SubSub ListFilesInFolder (ByVal xFolderName كسلسلة ، ByVal xIsSubfolders as Boolean)
خافت xFileSystemObject ككائن
خافت xFolder ككائن
خافت xSubFolder ككائن
خافت xFile ككائن
صف خافت فهرسة طويلة
تعيين xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
تعيين xFolder = xFileSystemObject.GetFolder (xFolderName)
rowIndex = Application.ActiveSheet.Range ("A65536"). End (xlUp) .Row + 1
لكل xFile في xFolder.Files
Application.ActiveSheet.Cells (rowIndex، 1) .Formula = xFile.Name
rowIndex = rowIndex + 1
التالي xFile
إذا كانت المجلدات الفرعية xIsSubfolders ثم
لكل xSubFolder في xFolder.SubFolders
ListFilesInFolder xSubFolder.Path ، True
التالي xSubFolder
إنهاء حالة
تعيين xFile = لا شيء
تعيين xFolder = لا شيء
تعيين xFileSystemObject = لا شيء
نهاية الفرعية

أي أفكار؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
آسف ... أعطيتك رمز خاطئ (أدناه) ، ها هو الرمز الذي قمت بتعديله ..
رمز:
القائمة الرئيسية الفرعية ()
على خطأ استئناف التالي
خافت xFileSystemObject ككائن
خافت xFolder ككائن
خافت xSubFolder ككائن
خافت xFile ككائن
صف خافت فهرسة طويلة
إجابة خافتة كمتغير
الجواب = خطأ
مع Application.FileDialog (msoFileDialogFolderPicker)
.Title = "تحديد مجلد"
.AllowMultiSelect = خطأ
تعيين المجلد = Application.FileDialog (msoFileDialogFolderPicker)
إذا مجلد. Show = -1 ثم
xDir = folder.SelectedItems (1)
آخر
خروج الفرعية
إنهاء حالة
انتهت ب

قائمة المكالمات - FileInFolder (xDir، True)
نهاية الفرعية

القائمة الفرعية ، الملفات ، المجلد (ByVal xFolderName كسلسلة ، ByVal xIs ، المجلدات الفرعية كـ Boolean)
تعيين xFileSystemObject = CreateObject ("Scripting.FileSystemObject")
تعيين xFolder = xFileSystemObject.GetFolder (xFolderName)
rowIndex = Application.ActiveSheet.Range ("A65536"). End (xlUp) .Row + 1

أضف مسافة ثم اسم المجلد إلى ورقة العمل
rowIndex = rowIndex + 1
مع Application.ActiveSheet.Cells (rowIndex، 1)
.Value = xFolder.Name
الخط الحجم = 12
.Font.FontStyle = "غامق مائل"
انتهت ب
rowIndex = rowIndex + 1

لكل xFile في xFolder.Files
Application.ActiveSheet.Cells (rowIndex، 1) .Formula = xFile.Name
rowIndex = rowIndex + 1
التالي xFile
إذا كانت المجلدات الفرعية xIsSubfolders ثم
لكل xSubFolder في xFolder.SubFolders
ListFilesInFolder xSubFolder.Path ، True
التالي xSubFolder
rowIndex = rowIndex + 1
إنهاء حالة

تعيين xFile = لا شيء
تعيين xFolder = لا شيء
تعيين xFileSystemObject = لا شيء

استدعاء MainList
نهاية الفرعية


تم تصغير هذا التعليق بواسطة المشرف على الموقع
عمل جيد ، بالضبط ما كنت أحاول إنشاؤه. لكن هذا أفضل 1000٪.
لا توجد تعليقات منشورة هنا حتى الآن
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة

تواصل معنا

حقوق التأليف والنشر © 2009 - شبكة الاتصالات العالمية.extendoffice.com. | كل الحقوق محفوظة. مشغل بواسطة ExtendOffice. | | خريطة الموقع
Microsoft وشعار Office هما علامتان تجاريتان أو علامتان تجاريتان مسجلتان لشركة Microsoft Corporation في الولايات المتحدة و / أو دول أخرى.
محمي بواسطة Sectigo SSL