Excel批量创建文件夹并复制文件有三种方法:一、用公式生成.bat命令执行;二、Power Query整理数据后由PowerShell脚本处理;三、VBA宏直接调用文件系统对象操作。

如果您需要在Excel中批量创建文件夹并复制对应文件,通常是因为存在大量数据需要按特定规则组织文件结构。以下是实现该目标的几种可行方法:
一、使用Excel公式生成批处理命令
该方法通过Excel构造Windows命令行指令(如md和copy),再将指令导出为.bat文件执行,无需编程基础,适合中小规模操作。
1、在Excel中准备两列:A列为文件夹名称(如“客户_001”),B列为待复制的源文件完整路径(如“D:\原始文件\report.xlsx”)。
2、在C2单元格输入公式:="md \""&A2&"\"",回车后向下填充,生成所有创建文件夹的命令。
3、在D2单元格输入公式:="copy \""&B2&"\" \""&A2&"\\\"",回车后向下填充,生成所有复制文件命令。
4、选中C列和D列全部命令内容,复制粘贴至记事本,另存为“批量操作.bat”,编码选择ANSI,保存后双击运行。
二、利用Power Query+PowerShell联动
该方法借助Power Query整理路径数据,再由PowerShell脚本读取并执行创建与复制动作,支持相对路径、错误跳过及中文路径兼容。
1、在Excel中新建查询:数据→从表格/区域,导入含文件夹名与源文件路径的表格。
2、在Power Query编辑器中,添加自定义列,列名为“目标路径”,公式为:= [文件夹名] & "\" 。
3、关闭并上载查询至工作表新位置,确保三列数据:源路径、文件夹名、目标路径。
4、新建文本文件,输入PowerShell代码:$data = Import-Csv "D:\路径\清单.csv"; foreach($row in $data){mkdir $row.目标路径 -Force; Copy-Item $row.源路径 (Join-Path $row.目标路径 (Split-Path $row.源路径 -Leaf)) -Force},保存为.ps1文件。
5、将Excel导出为CSV(UTF-8编码),路径与脚本中引用一致;右键PowerShell脚本→“使用PowerShell运行”。
三、VBA宏直接调用文件系统对象
该方法在Excel内部完成全部操作,不依赖外部脚本或命令行,适合对安全性要求高、禁用.bat或.ps1的办公环境。
1、按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Sub 批量建文件夹并复制()
Dim fso As Object, i As Long
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Trim(Cells(i, 1).Value) "" Then
fso.CreateFolder ThisWorkbook.Path & "\" & Cells(i, 1).Value
fso.CopyFile Cells(i, 2).Value, ThisWorkbook.Path & "\" & Cells(i, 1).Value & "\" & fso.GetFileName(Cells(i, 2).Value), True
End If
Next i
End Sub
2、确保A列填写文件夹名,B列填写源文件绝对路径(如“C:\资料\模板.docx”)。
3、返回Excel,按Alt+F8,选择“批量建文件夹并复制”,点击“运行”。
4、检查Excel所在目录下是否已生成对应文件夹及复制完成的文件。









