Excel VBA刷新查询报运行时错误9,部分连接前缀为Requête而非Query
问题原因排查
- 前缀差异是Excel语言环境导致的:英语版Excel创建的Power Query连接默认前缀为
Query -,法语版Excel创建的默认前缀为法语的Requête -,如果同一个工作簿在不同语言的Excel环境下创建过查询,就会出现两种前缀并存的情况。 - 运行时错误9(下标越界)的核心原因是你代码中写的连接名称,和工作簿中实际存在的连接名称不完全匹配,可能存在拼写、空格、特殊字符的细微差异。
解决方案
方案1:通用遍历刷新(无需关注连接名)
最稳妥的方式是直接遍历工作簿中所有Power Query类型的连接进行刷新,不需要硬编码连接名,也不受前缀差异影响:
Sub RefreshAllPowerQuery() Dim conn As WorkbookConnection If Verification Then Key = MsgBox("Please close all other Excel file, are you ready?", vbQuestion + vbYesNo + vbDefaultButton2, "Export loader") If Key = vbYes Then ' 遍历所有连接,仅刷新Power Query类型的连接 For Each conn In ThisWorkbook.Connections If conn.Type = xlConnectionTypeOLEDB Then If InStr(1, conn.OLEDBConnection.Connection, "Power Query", vbTextCompare) > 0 Then conn.Refresh DoEvents ' 可选:等待当前查询刷新完成再执行下一个 Do While conn.Refreshing DoEvents Loop End If End If Next conn MsgBox "End of the process", , "End" Else MsgBox "Abort", , "Abort Procedure" Exit Sub End If End If End Sub
方案2:先查询实际连接名再调用
如果需要指定刷新特定查询,可以先运行以下代码,在VBA编辑器的立即窗口(按Ctrl+G调出)查看所有连接的准确名称,再替换到你的原代码中即可:
Sub ListAllConnections() Dim conn As WorkbookConnection For Each conn In ThisWorkbook.Connections Debug.Print "连接名称:" & conn.Name & " | 连接类型:" & conn.Type Next conn End Sub
方案3:统一连接名前缀
如果想要彻底消除前缀差异,可手动修改连接名称:
- 点击Excel顶部菜单栏「数据」选项卡→「连接」
- 在弹出的连接列表中选中需要修改的连接,点击「属性」
- 直接修改名称为统一格式即可,比如全部改为
Query - 查询名的格式,后续调用直接用修改后的名称即可。
内容的提问来源于stack exchange,提问作者Xodarap
相关产品推荐
相关产品推荐

