如何将多个CSV文件导入Power Query Editor并生成独立单文件查询
批量将文件夹中CSV转为Power Query独立查询的方法
方法一:VBA批量生成(高效推荐)
步骤1:导出文件列表到Excel
- 点击
数据 > 获取数据 > 文件 > 文件夹,选择存放CSV的目标文件夹,点击「确定」。 - 在弹出的文件夹预览窗口,点击「编辑」进入Power Query编辑器。
- 删除「文件夹路径」「修改日期」等多余列,只保留名称和文件路径两列。
- 添加自定义列:点击「添加列 > 自定义列」,输入公式
Text.BeforeDelimiter([名称], ".csv"),将新列命名为「查询名称」,然后删除原「名称」列。 - 点击「关闭并上载」,将处理后的文件列表保存到Excel工作表(可重命名为
FileList)。
步骤2:运行VBA宏创建查询
- 按
Alt+F11打开VBA编辑器,右键点击当前工作簿,选择「插入 > 模块」。 - 粘贴以下代码到模块中:
Sub CreateCSVQueries() Dim ws As Worksheet Dim tbl As ListObject Dim row As Integer Dim queryName As String Dim filePath As String Dim mCode As String ' 替换为存放文件列表的工作表名称 Set ws = ThisWorkbook.Worksheets("FileList") Set tbl = ws.ListObjects(1) For row = 1 To tbl.ListRows.Count queryName = tbl.ListColumns("查询名称").DataBodyRange(row).Value filePath = tbl.ListColumns("文件路径").DataBodyRange(row).Value ' 构建Power Query的M代码(可根据CSV编码、分隔符调整参数) mCode = "let" & vbCrLf & _ " Source = Csv.Document(File.Contents(""" & filePath & """), [Delimiter="","", Encoding=65001, QuoteStyle=QuoteStyle.Csv])" & vbCrLf & _ "in" & vbCrLf & _ " Source" ' 创建独立查询 ThisWorkbook.Queries.Add Name:=queryName, Formula:=mCode Next row MsgBox "所有查询创建完成!" End Sub
- 返回Excel,按
F5运行宏(若提示宏被禁用,需在文件选项中启用宏)。
方法二:手动拆分合并查询(适合少量文件)
- 导入文件夹得到合并查询后,右键点击查询名选择「高级编辑器」,复制全部M代码。
- 点击
数据 > 获取数据 > 空白查询,打开高级编辑器,粘贴代码。 - 修改代码中的
Source部分:将文件夹路径替换为单个CSV的完整路径,同时修改查询名称,重复此操作直到所有CSV都生成独立查询。
注意事项
- 若CSV使用GB2312编码,将代码中的
Encoding=65001改为Encoding=936。 - 若CSV是制表符分隔,将
Delimiter="",""改为Delimiter=#tab。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

