Excel VBA连接Vertica时Refresh BackgroundQuery报运行时1004错误
问题原因排查及解决方法
首先修正代码明显错误
你提供的代码中存在变量名拼写不一致问题,本地可运行大概率是本地有之前调试残留的同名对象,新环境没有就会触发报错:
你在代码中先定义了变量
campaign_Table,但后续筛选行时误写为campaignbygeo_Table,请先修正该行代码:
' 原错误代码 #"Filtered Rows"" = Table.SelectRows(campaignbygeo_Table, each [CampaignID]=" & CID & " )," ' 修正后 #"Filtered Rows"" = Table.SelectRows(campaign_Table, each [CampaignID]=" & CID & " ),"
其他常见排查方向
- 确认Power Query组件状态
- Excel 2016及以上版本:检查「文件-选项-自定义功能区」是否已勾选启用Power Query,确认相关功能未被组策略禁用
- Excel 2013/2010版本:确认已单独安装Power Query插件,且在COM加载项中处于启用状态
- 确认
Microsoft.Mashup.OleDb.1提供者已正常注册,可通过修复Office安装解决缺失问题
- 排查配置差异
- 确认同事设备的Vertica ODBC DSN名称完全匹配
Vertica(大小写敏感),且ODBC驱动位数和Office位数一致(32位Office对应32位ODBC,64位对应64位) - 检查Power Query隐私级别设置:路径为「数据-获取数据-查询选项-隐私」,可选择「忽略隐私级别以提高性能」,避免跨数据源权限拦截
- 确认同事设备的Vertica ODBC DSN名称完全匹配
- 避免资源冲突
- 在创建新的
campaign查询前,先删除已存在的同名查询,避免重名冲突:
On Error Resume Next ActiveWorkbook.Queries("campaign").Delete On Error GoTo 0 - 在创建新的
- 验证变量正确性
- 调试确认
CID变量在同事设备运行时已正确赋值,不存在空值、格式错误导致筛选条件语法异常的问题
- 调试确认
内容的提问来源于stack exchange,提问作者Pri Mar
相关产品推荐
相关产品推荐

