跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中列出所有文件夹和子文件夹?

Author: Xiaoyang Last Modified: 2025-08-22

在处理目录或文件管理任务时,您可能需要快速获取特定目录内所有文件夹和子文件夹的完整列表,并直接在 Excel 中查看该信息。遗憾的是,Excel 并未提供内置功能或简单的向导来自动从指定的文件夹路径检索所有文件夹或子文件夹名称。本文介绍了一种 VBA 代码方法——允许您将任意选定目录中的所有文件夹和子文件夹直接列到工作表中。这不仅降低了人为错误的风险,还省去了繁琐的工作,帮助您快速跟踪和管理数据组织。

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


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

如果您想从指定目录中提取并显示所有文件夹和子文件夹名称到 Excel 中,利用 VBA(Visual Basic for Applications)是一种有效的解决方案。这种方法提供了灵活性和控制力,不仅可以获取文件夹名称,还可以获取其他信息,例如文件夹路径、创建日期和最后修改日期。此方法特别适合熟悉使用 Excel 开发者功能的用户,以及那些处理动态或经常变化的文件系统的用户。

1. 按 ALT + F11 打开“Microsoft Visual Basic for Applications”编辑器。此工具允许您在工作簿中添加和编辑宏。

2. 在 VBA 编辑器中,点击 插入 > 模块。这将创建一个新的模块窗口。将以下代码复制并粘贴到模块中:

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 或点击 VBA 编辑器中的运行按钮执行宏。随后会弹出一个选择文件夹对话框,提示您选择要扫描文件夹和子文件夹的目标目录。

vba code to select folder name

4. 选择所需的目录并点击 确定。宏将处理该目录并生成一个新的工作簿,列出所有文件夹和子文件夹及其完整路径、直接父目录、名称、创建日期和最后修改日期,如下所示:

all folder names are listed in Excel

使用此代码的一些实用技巧和注意事项:

  • 如果您的目录结构非常庞大,宏可能需要一些时间来处理所有文件夹。请在执行过程中耐心等待,并避免中断进程。
  • VBA 方法要求启用宏设置;否则,代码将无法正常运行。如果遇到安全警告,请检查 Excel 选项下的信任中心设置。
  • 如果不小心选择了错误的文件夹,只需重新运行宏并选择正确的目录即可。
  • 此方法仅列出文件夹和子文件夹信息;如果还需要列出文件,请参阅下面的相关文章以获取更多选项。
  • 如果多个用户共享该工作簿,请提醒他们在自己的电脑上必须启用宏才能使用此动态列表功能。
  • 如果生成的工作簿为空白或不完整,请确保所选目录不为空,并且您具有足够的读取权限。对于特别深或复杂的文件夹树,请检查系统的资源限制,并在必要时考虑分批或按子目录进行处理。

此 VBA 解决方案灵活方便,无需额外插件或外部软件,并自动生成输出工作簿以方便使用。然而,它最适合熟悉基本宏操作的用户,并且针对特定定制可能需要进一步调整。


相关文章:

如何将目录中的文件列表输出到Excel工作表中?

最佳Office办公效率工具

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

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


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

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠