跳至主要内容

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

Author: Xiaoyang Last Modified: 2025-07-31

在处理目录或文件管理任务时,您可能需要快速获取特定目录内所有文件夹和子文件夹的完整列表,并直接在 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 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%,每天帮你减少上百次鼠标点击!