You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:45:02