可利用power query、cmd命令、excel公式或vba宏批量提取文件名并导入excel。power query最便捷,支持元数据获取;cmd适合旧版excel;公式仅适用于当前工作簿;vba灵活性最高,可自定义筛选条件。

如果您需要从文件夹中批量提取多个文件的名称并导入Excel,而不是手动逐一输入,则可以利用Excel内置函数或外部工具实现自动化操作。以下是解决此问题的步骤:
一、使用Power Query提取文件名
Power Query是Excel中强大的数据获取与转换工具,可直接连接到指定文件夹,自动列出所有文件的元数据,包括文件名、路径、大小和修改时间等信息。
1、在Excel中,点击【数据】选项卡,选择【获取数据】→【从文件】→【从文件夹】。
2、在弹出窗口中,输入目标文件夹的完整路径,或点击浏览按钮定位该文件夹,然后点击【确定】。
3、Power Query编辑器将加载一个包含所有文件信息的预览表,其中【Name】列即为文件名(不含扩展名),【Extension】列为后缀,【Folder Path】为所在路径。
4、如只需文件名,右键点击【Name】列标题,选择【删除其他列】;若需保留扩展名,可添加自定义列,输入公式 = [Name] & [Extension] 合并两列。
5、点击左上角【关闭并上载】,结果将自动导入当前工作表。
二、使用CMD命令导出文件名再导入Excel
通过Windows系统自带的命令提示符,可快速生成文本格式的文件名列表,再以导入方式加载至Excel,适用于无Power Query版本(如Excel 2010/2013)用户。
1、打开目标文件夹,在地址栏输入 cmd 并按回车,启动该路径下的命令提示符。
2、输入命令 dir /b > filenames.txt,回车执行,将在当前目录生成一个纯文件名列表(不含路径与扩展名)。
3、若需包含扩展名,改用命令 dir /b /a-d > filenames.txt;若需含完整路径,使用 dir /s /b /a-d > filenames.txt。
4、在Excel中,点击【数据】→【从文本/CSV】,选择刚生成的filenames.txt文件,按向导导入,分隔符选“无”,编码选“UTF-8”或“ANSI”(根据中文显示情况调整)。
三、使用Excel公式配合超链接提取当前工作簿文件名
当仅需提取当前Excel文件自身的名称(不含路径),可借助CELL函数与文本截取组合完成,无需外部操作,适合嵌入模板中动态显示。
1、在任意单元格输入公式:=TRIM(RIGHT(SUBSTITUTE(CELL("filename"),"[",REPT(" ",255)),255)),即可返回当前工作簿名称(含扩展名)。
2、若需去除扩展名,嵌套SUBSTITUTE与FIND函数:=LEFT(TRIM(RIGHT(SUBSTITUTE(CELL("filename"),"[",REPT(" ",255)),255)),FIND(".",TRIM(RIGHT(SUBSTITUTE(CELL("filename"),"[",REPT(" ",255)),255)))-1)。
3、注意:该方法仅对已保存的文件有效;未保存的新建文件会返回错误值 #VALUE!。
四、使用VBA宏批量提取指定路径下所有文件名
VBA脚本可完全自动化遍历文件夹并写入Excel,支持自定义筛选条件(如仅提取.xlsx文件)、是否含子文件夹、是否写入扩展名等,灵活性高。
1、按 Alt + F11 打开VBA编辑器,插入新模块(右键项目→插入→模块)。
2、粘贴以下代码(以提取D:\Reports\下所有文件名为例):
Sub ListFileNames()
Dim fso As Object, folder As Object, file As Object
Dim ws As Worksheet: Set ws = ActiveSheet
Dim i As Long: i = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("D:\Reports\")
For Each file In folder.Files
ws.Cells(i, 1).Value = file.Name
i = i + 1
Next file
End Sub
3、修改代码中 "D:\Reports\" 为实际目标路径,确保末尾含反斜杠。
4、返回Excel,按 Alt + F8,选择ListFileNames宏并运行,文件名将从A1开始逐行列出。











