excel中批量提取文件夹内文件名有四种方法:一、power query直接导入并筛选name列;二、cmd命令生成txt后导入;三、vba宏遍历写入;四、office 365+公式调用自定义函数。

如果您需要在Excel中快速获取指定文件夹下所有文件的名称列表,而不想手动逐个输入,可以通过多种方式实现批量提取。以下是几种常用且有效的操作方法:
一、使用Power Query导入文件夹内容
Power Query是Excel内置的数据获取与转换工具,可直接连接到文件系统并自动列出目标文件夹中的全部文件名及其属性。
1、打开Excel,切换到【数据】选项卡,点击【获取数据】→【从文件】→【从文件夹】。
2、在弹出窗口中,输入目标文件夹的完整路径,或点击浏览按钮选择该文件夹,然后点击【确定】。
3、Power Query编辑器将加载该文件夹内所有文件的元数据表,其中包含Name列(即文件名)和Extension列等。
4、删除不需要的列(如Content、Date accessed等),仅保留Name列。
5、点击【关闭并上载】,结果将自动导入当前工作表的A列起始位置。
二、利用CMD命令生成文件名文本再导入Excel
通过Windows命令提示符调用dir命令,可将指定路径下的所有文件名导出为纯文本文件,随后以文本格式导入Excel。
1、按Win+R键,输入cmd并回车,打开命令提示符窗口。
2、输入命令:cd /d D:\目标文件夹路径(将D:\目标文件夹路径替换为实际路径)。
3、执行导出命令:dir /b > filenames.txt,该命令会生成一个只含文件名(不含路径和扩展名)的文本文件。
4、若需包含扩展名,改用:dir /b /a-d > filenames.txt。
5、在Excel中,选择【数据】→【从文本/CSV】,定位并导入filenames.txt文件,选择“分隔符号”为无,完成导入。
三、使用VBA宏自动遍历并写入文件名
VBA脚本可直接在Excel内部调用文件系统对象,无需外部工具或手动导出,适合重复性高、路径常变的操作场景。
1、按Alt+F11打开VBA编辑器,插入新模块(右键项目→插入→模块)。
2、粘贴以下代码:
Sub ListFilesInFolder()
Dim fso As Object, folder As Object, file As Object
Dim ws As Worksheet: Set ws = ActiveSheet
Dim path As String: path = "D:\目标文件夹路径"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(path)
ws.Cells.Clear
ws.Range("A1").Value = "文件名"
Dim i As Integer: i = 2
For Each file In folder.Files
ws.Cells(i, 1).Value = file.Name
i = i + 1
Next file
End Sub
3、修改代码中path = "D:\目标文件夹路径"为实际文件夹路径。
4、按F5运行宏,当前工作表将自动生成从A1开始的文件名列表。
四、借助Excel公式配合DIR函数(适用于Office 365/Excel 2021动态数组版本)
在支持SEQUENCE和FILTERXML等新函数的版本中,可通过组合公式间接调用系统命令获取文件名,但需启用宏支持并配置信任中心设置。
1、确保已启用【开发工具】选项卡,并在【Excel选项】→【信任中心】→【信任中心设置】→【宏设置】中勾选“启用所有宏”(仅限可信环境)。
2、按Alt+F11进入VBA编辑器,在【插入】→【模块】中新建模块,输入以下函数:
Function GetFileList(path As String) As Variant
Dim shell As Object, exec As Object, output As String
Set shell = CreateObject("WScript.Shell")
Set exec = shell.Exec("cmd /c dir """ & path & "\*.*"" /b /a-d")
output = exec.StdOut.ReadAll
GetFileList = Split(output, vbCrLf)
End Function
3、返回Excel,在A1单元格输入公式:=GetFileList("D:\目标文件夹路径"),按Enter后自动溢出填充全部文件名。











