跳至主要内容

如何将文件夹及子文件夹中的所有文件列到工作表中?

Author: Xiaoyang Last Modified: 2025-07-31

您是否尝试过将文件夹中的所有文件名列到工作表中,包括其子文件夹中的文件?实际上,在Excel中没有直接的方法可以列出文件夹及其子文件夹中的文件名。然而,今天我将介绍一些快速技巧来解决这个问题。

使用VBA代码列出文件夹和子文件夹中的所有文件名

使用Kutools for Excel快速轻松地列出文件夹和子文件夹中的所有文件名


使用VBA代码列出文件夹和子文件夹中的所有文件名

通常,Excel没有内置功能来处理此任务,但您可以应用以下VBA代码来完成此问题。

1. 激活一个新工作表以列出文件名。

2. 在Excel中按住ALT + F11键,打开Microsoft Visual Basic for Applications窗口。

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键运行此代码,弹出一个对话框,选择MainList宏名称,然后单击运行按钮,参见截图:

a screenshot of running the VBA code

5. 在浏览窗口中,请选择要列出所有文件名(包括子文件夹)的文件夹,参见截图:

a screenshot of selecting the folder you want to list all filenames including the subfolders

6. 指定文件夹后,单击确定按钮,文件夹及其子文件夹中的所有文件名已从单元格A2开始列在当前工作表中,参见截图:

a screenshot of the seleted folder
a screenshot of an arrow
a screenshot listing all filenames from the selected folder and its subfolders

使用Kutools for Excel快速轻松地列出文件夹和子文件夹中的所有文件名

通过上述代码,您只能列出文件名,有时您需要列出其他属性,例如文件大小、文件类型、创建时间、所在文件夹等。Kutools for Excel包含一个有用的功能——文件名目录,使用此功能,您可以快速列出文件夹及其子文件夹中的所有或特定类型的文件名。

下载并安装 Kutools for Excel后,请按照以下步骤操作:

1. 单击企业 > 导入与导出 > 文件名目录,参见截图:

a screenshot of enabling the Filename List feature of Kutools

2. 在文件名目录对话框中,执行以下操作:

A: 单击 a screenshot of the folder icon按钮以选择要列出文件名的文件夹;

B: 从文件类型部分指定要列出的文件类型;

C: 从文件大小单位部分选择要显示的一个文件大小单位。

注意:要列出子文件夹中的文件名,请勾选包括子目录内的文件,您还可以根据需要勾选包括隐藏文件和文件夹。如果勾选创建超链接选项,它将为每个文件名和文件夹创建超链接。

a screenshot of configuring the Filename List dialog box

3. 然后单击确定按钮,所选文件夹及其子文件夹中包含的所有文件都已在新工作表中显示了以下属性。参见截图:

a screenshot listing the details of files of the selected folder

单击以了解更多关于此文件名目录工具的详细信息。

立即下载并免费试用Kutools for Excel!


最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!