Power Query中用相对路径导入子文件夹CSV文件的报错解决
Power Query 导入子文件夹CSV(相对路径)报错解决方法
错误原因
你用到的ChDir是VBA专用命令,Power Query的M语言并不支持这个函数,因此会出现Expression.Error: The name 'ChDir' wasn't recognized的错误。另外File.Contents需要指定具体的单个文件路径,不能直接使用*.csv通配符批量导入文件。
最优解决方法
通过Power Query自带的Folder.Files函数批量获取子文件夹内的CSV文件,结合当前工作簿的相对路径实现导入,具体步骤如下:
创建命名单元格获取当前工作簿路径
- 在Excel任意空白单元格输入公式:
=LEFT(CELL("filename"),FIND("[",CELL("filename"))-1) - 选中该单元格,点击公式栏左侧的名称框,输入
WorkbookPath后回车完成命名。
- 在Excel任意空白单元格输入公式:
使用Power Query M代码批量导入合并CSV
打开Power Query编辑器,替换原有代码为以下内容:let // 获取当前工作簿所在文件夹路径 CurrentWorkbookPath = Excel.CurrentWorkbook(){[Name="WorkbookPath"]}[Content]{0}[Column1], // 拼接子文件夹路径 SourceFolder = CurrentWorkbookPath & "\SourceData\", // 获取子文件夹下所有文件 Files = Folder.Files(SourceFolder), // 筛选出CSV格式文件 FilteredCSV = Table.SelectRows(Files, each [Extension] = ".csv"), // 导入每个CSV文件并合并为一张表 CombinedTables = Table.Combine(Table.AddColumn(FilteredCSV, "CSVContent", each Csv.Document(File.Contents([FullPath]), [Delimiter=",", Columns=18, Encoding=1252, QuoteStyle=QuoteStyle.None]))) in CombinedTables
这段代码会自动遍历SourceData子文件夹下所有CSV文件,按照你指定的分隔符、列数等参数导入,并合并成一个完整的表格。
内容的提问来源于stack exchange,提问作者xyz333
相关产品推荐
相关产品推荐

