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

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:统一连接名前缀

如果想要彻底消除前缀差异,可手动修改连接名称:

  1. 点击Excel顶部菜单栏「数据」选项卡→「连接」
  2. 在弹出的连接列表中选中需要修改的连接,点击「属性」
  3. 直接修改名称为统一格式即可,比如全部改为Query - 查询名的格式,后续调用直接用修改后的名称即可。

内容的提问来源于stack exchange,提问作者Xodarap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:05