Excel OLEDB连接修改CSV数据源:SourceDataFile返回空白如何处理
问题原因说明
你遇到的SourceDataFile返回空值,是因为这个OLEDB连接走的是Microsoft Mashup引擎(Power Query的底层驱动),Data Source=$Workbook$说明实际的CSV路径配置存储在工作簿内嵌的Power Query查询里,也就是连接字符串中Location参数对应的PAIDOFF_L2500这个查询,不是存储在OLEDB连接的常规属性中。
修改方法
分为两种操作场景,对应代码如下:
- 方法1:修改指定查询的CSV路径(适合单连接调整)
直接操作对应Power Query查询的公式,替换目标路径即可,示例代码:
Sub 修改指定PowerQuery的CSV路径() Dim wb As Workbook Dim targetQry As WorkbookQuery Dim oldFilePath As String, newFilePath As String Set wb = ActiveWorkbook ' 此处查询名替换为你连接字符串Location参数后的对应值,示例为PAIDOFF_L2500 Set targetQry = wb.Queries("PAIDOFF_L2500") ' 填写待替换的旧文件路径、新文件路径 oldFilePath = "C:\旧路径\旧文件名.csv" newFilePath = "D:\新路径\新文件名.csv" ' 替换查询公式中的路径参数 targetQry.Formula = Replace(targetQry.Formula, oldFilePath, newFilePath) ' 可选:修改完成后刷新数据 wb.Connections("Query - PAIDOFF_L2500").Refresh End Sub
- 方法2:批量修改所有查询的CSV路径(适合全工作簿路径统一调整)
遍历所有Power Query查询批量替换路径前缀,示例代码:
Sub 批量修改所有PowerQuery的CSV路径() Dim wb As Workbook Dim qry As WorkbookQuery Dim oldPathPrefix As String, newPathPrefix As String Set wb = ActiveWorkbook ' 填写待替换的旧路径前缀、新路径前缀 oldPathPrefix = "C:\旧的CSV存储文件夹\" newPathPrefix = "D:\新的CSV存储文件夹\" For Each qry In wb.Queries qry.Formula = Replace(qry.Formula, oldPathPrefix, newPathPrefix) Next ' 可选:批量刷新所有连接数据 wb.RefreshAll End Sub
注意:如果你的Power Query查询设置了加密,需要先解密后才能修改查询公式。
内容的提问来源于stack exchange,提问作者C0ppert0p
相关产品推荐
相关产品推荐

