ไปยังเนื้อหาหลัก

จะแสดงรายการไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยลงในแผ่นงานได้อย่างไร?

คุณเคยพยายามแสดงชื่อไฟล์ทั้งหมดจากโฟลเดอร์ลงในแผ่นงานรวมถึงไฟล์ที่อยู่ในโฟลเดอร์ย่อยหรือไม่? ในความเป็นจริงไม่มีวิธีโดยตรงที่เราจะแสดงชื่อไฟล์จากโฟลเดอร์และโฟลเดอร์ย่อยใน Excel ได้อย่างไรก็ตามวันนี้ฉันจะแนะนำเคล็ดลับง่ายๆในการแก้ปัญหานี้

แสดงชื่อไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยด้วยรหัส VBA

แสดงชื่อไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยอย่างรวดเร็วและง่ายดายด้วย Kutools for Excel


โดยปกติ Excel ไม่มีคุณสมบัติในการจัดการกับงานนี้ แต่คุณสามารถใช้รหัส VBA ต่อไปนี้เพื่อแก้ปัญหานี้ให้เสร็จสิ้น

1. เปิดใช้งานแผ่นงานใหม่ซึ่งจะแสดงรายการชื่อไฟล์

2. กด ALT + F11 ใน Excel และจะเปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

3. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในไฟล์ หน้าต่างโมดูล.

รหัส VBA: แสดงชื่อไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อย

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 ในโฟลเดอร์ย่อยของโฟลเดอร์ 1

5. และใน หมวดหมู่สินค้า โปรดเลือกโฟลเดอร์ที่คุณต้องการแสดงชื่อไฟล์ทั้งหมดรวมถึงโฟลเดอร์ย่อยดูภาพหน้าจอ:

ไฟล์รายการ doc ในโฟลเดอร์ย่อยของโฟลเดอร์ 2

6. หลังจากระบุโฟลเดอร์แล้วคลิก OK และชื่อไฟล์ทั้งหมดในโฟลเดอร์และโฟลเดอร์ย่อยได้รับการระบุไว้ในแผ่นงานปัจจุบันจากเซลล์ A2 ดูภาพหน้าจอ:

ไฟล์รายการ doc ในโฟลเดอร์ย่อยของโฟลเดอร์ 3
1
ไฟล์รายการ doc ในโฟลเดอร์ย่อยของโฟลเดอร์ 4

ด้วยรหัสด้านบนคุณสามารถแสดงชื่อไฟล์ได้บางครั้งคุณต้องแสดงรายการคุณลักษณะอื่น ๆ เช่นขนาดไฟล์ประเภทไฟล์เวลาที่สร้างขึ้นมีโฟลเดอร์และอื่น ๆ Kutools สำหรับ Excel มีฟังก์ชันที่มีประโยชน์ - รายการชื่อไฟล์ด้วยคุณสมบัตินี้คุณสามารถแสดงรายการชื่อไฟล์ทั้งหมดหรือบางประเภทในโฟลเดอร์และโฟลเดอร์ย่อยได้อย่างรวดเร็ว

Kutools สำหรับ Excel : ด้วย Add-in ของ Excel ที่มีประโยชน์มากกว่า 300 รายการทดลองใช้ฟรีโดยไม่มีข้อ จำกัด ใน 30 วัน.

หลังจากการติดตั้ง Kutools สำหรับ Excelโปรดทำตามขั้นตอนต่อไปนี้:

1. คลิก Enterprise > นำเข้าส่งออก > รายการชื่อไฟล์ดูภาพหน้าจอ:

2. ใน รายการชื่อไฟล์ ไดอะล็อกบ็อกซ์ให้ดำเนินการดังต่อไปนี้:

Aคลิกที่นี่ ไฟล์รายการ doc ในโฟลเดอร์ย่อยของโฟลเดอร์ 7ปุ่มเพื่อเลือกโฟลเดอร์ที่คุณต้องการแสดงชื่อไฟล์

B: ระบุประเภทไฟล์ที่คุณต้องการแสดงรายการจากไฟล์ ประเภทไฟล์ มาตรา;

C: เลือกหนึ่งหน่วยขนาดไฟล์ที่คุณต้องการแสดงจากไฟล์ หน่วยขนาดไฟล์ มาตรา.

หมายเหตุ: หากต้องการแสดงชื่อไฟล์จากโฟลเดอร์ย่อยโปรดตรวจสอบ รวมไฟล์ในไดเรกทอรีย่อยคุณยังสามารถตรวจสอบไฟล์ รวมไฟล์และโฟลเดอร์ที่ซ่อนอยู่ ตามที่คุณต้องการ หากคุณตรวจสอบ สร้างไฮเปอร์ลิงก์ มันจะสร้างไฮเปอร์ลิงค์สำหรับแต่ละชื่อไฟล์และโฟลเดอร์

ดาวน์โหลดและทดลองใช้ฟรีทันที!

3. จากนั้นคลิก OK ไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์ที่เลือกและโฟลเดอร์ย่อยจะถูกแสดงพร้อมกับแอตทริบิวต์ต่อไปนี้ในแผ่นงานใหม่ ดูภาพหน้าจอ:

ไฟล์รายการ doc ในโฟลเดอร์ย่อยของโฟลเดอร์ 8

คลิกเพื่อทราบรายละเอียดเพิ่มเติมเกี่ยวกับยูทิลิตี้ชื่อไฟล์นี้

ดาวน์โหลดและทดลองใช้ Kutools for Excel ฟรีทันที!


Kutools สำหรับ Excel: ด้วย Add-in ของ Excel ที่มีประโยชน์มากกว่า 300 รายการให้ทดลองใช้ฟรีโดยไม่มีข้อ จำกัด ใน 30 วัน ดาวน์โหลดและทดลองใช้ฟรีทันที!

สุดยอดเครื่องมือเพิ่มผลผลิตในสำนักงาน

🤖 Kutools AI ผู้ช่วย: ปฏิวัติการวิเคราะห์ข้อมูลโดยยึดตาม: การดำเนินการที่ชาญฉลาด   |  สร้างรหัส  |  สร้างสูตรที่กำหนดเอง  |  วิเคราะห์ข้อมูลและสร้างแผนภูมิ  |  เรียกใช้ฟังก์ชัน Kutools...
คุณสมบัติยอดนิยม: ค้นหา เน้น หรือระบุรายการที่ซ้ำกัน   |  ลบแถวว่าง   |  รวมคอลัมน์หรือเซลล์โดยไม่สูญเสียข้อมูล   |   รอบโดยไม่มีสูตร ...
การค้นหาขั้นสูง: VLookup หลายเกณฑ์    VLookup หลายค่า  |   VLookup ข้ามหลายแผ่น   |   การค้นหาที่ไม่ชัดเจน ....
รายการแบบเลื่อนลงขั้นสูง: สร้างรายการแบบหล่นลงอย่างรวดเร็ว   |  รายการแบบหล่นลงขึ้นอยู่กับ   |  เลือกหลายรายการแบบหล่นลง ....
ผู้จัดการคอลัมน์: เพิ่มจำนวนคอลัมน์เฉพาะ  |  ย้ายคอลัมน์  |  สลับสถานะการมองเห็นของคอลัมน์ที่ซ่อนอยู่  |  เปรียบเทียบช่วงและคอลัมน์ ...
คุณสมบัติเด่น: กริดโฟกัส   |  มุมมองการออกแบบ   |   บาร์สูตรใหญ่    สมุดงานและตัวจัดการชีต   |  ห้องสมุดทรัพยากร (ข้อความอัตโนมัติ)   |  เลือกวันที่   |  รวมแผ่นงาน   |  เข้ารหัส/ถอดรหัสเซลล์    ส่งอีเมลตามรายการ   |  ซุปเปอร์ฟิลเตอร์   |   ตัวกรองพิเศษ (กรองตัวหนา/ตัวเอียง/ขีดทับ...) ...
ชุดเครื่องมือ 15 อันดับแรก12 ข้อความ เครื่องมือ (เพิ่มข้อความ, ลบอักขระ, ... )   |   50 + แผนภูมิ ประเภท (แผนภูมิ Gantt, ... )   |   40+ ใช้งานได้จริง สูตร (คำนวณอายุตามวันเกิด, ... )   |   19 การแทรก เครื่องมือ (ใส่ QR Code, แทรกรูปภาพจากเส้นทาง, ... )   |   12 การแปลง เครื่องมือ (ตัวเลขเป็นคำ, การแปลงสกุลเงิน, ... )   |   7 ผสานและแยก เครื่องมือ (แถวรวมขั้นสูง, แยกเซลล์, ... )   |   ... และอื่น ๆ

เพิ่มพูนทักษะ Excel ของคุณด้วย Kutools สำหรับ Excel และสัมผัสประสิทธิภาพอย่างที่ไม่เคยมีมาก่อน Kutools สำหรับ Excel เสนอคุณสมบัติขั้นสูงมากกว่า 300 รายการเพื่อเพิ่มประสิทธิภาพและประหยัดเวลา  คลิกที่นี่เพื่อรับคุณสมบัติที่คุณต้องการมากที่สุด...

รายละเอียด


แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
Comments (20)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Nice work, exactly what I was trying to create. But this is 1000% better.
This comment was minimized by the moderator on the site
Sorry... I gave you the wrong code (below), here is the code I modified..
Code:
Sub MainList()
On Error Resume Next
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Dim answer As Variant
answer = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select a Folder"
.AllowMultiSelect = False
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show = -1 Then
xDir = folder.SelectedItems(1)
Else
Exit Sub
End If
End With

Call ListFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1

' Add a space then the Folder Name to the Worksheet
rowIndex = rowIndex + 1
With Application.ActiveSheet.Cells(rowIndex, 1)
.Value = xFolder.Name
.Font.Size = 12
.Font.FontStyle = "Bold Italic"
End With
rowIndex = rowIndex + 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
rowIndex = rowIndex + 1
End If

Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing

Call MainList
End Sub


This comment was minimized by the moderator on the site
I have modified your code to make it recycle and re-run the folder dialog continuously until you press Cancel.Unfornatually it generates some errors.1. If subfolders become involved in a folder selected then the next folder selected becomes out of numerical order.2. If subfolders become involved in a folder selected the Cancel button has to be repeated and repeated depending on how many folders you have added.
Code:
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 SubSub 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

any ideas ?
This comment was minimized by the moderator on the site
Does it work on MAC too?
This comment was minimized by the moderator on the site
Hey, so if I have to just extract an extension from the whole list, where should I make changes?
This comment was minimized by the moderator on the site
Really new to VBA. how do i use the above code but have the file path built into it so i don't have to search for it every time?
This comment was minimized by the moderator on the site
My VBA is saying that the variable folder is not defined. Anyone know why this is?
This comment was minimized by the moderator on the site
What was the purpose of the parameter ByVal xIsSubfolders As Boolean?
This comment was minimized by the moderator on the site
Extremamente elegante este código!
This comment was minimized by the moderator on the site
Sub "GetFileOwner()" in code above is not used.
This comment was minimized by the moderator on the site
Hello, jumpjack,
The above code works well in my Excel, which Excel version do you use?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations