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

如何刷新单个ThisWorkbook.Queries及理清与ThisWorkbook.Connections的关联

Excel中Queries与Connections对象的关联逻辑及刷新方案

核心关联关系

  • Queries:存储Power Query的查询定义(M语言公式、查询名称等),属于ThisWorkbook.Queries集合,是数据获取/转换的逻辑核心。
  • Connections:作为Query和工作表数据区域的中间桥梁,属于ThisWorkbook.Connections集合。默认情况下,Excel会为每个Query自动生成对应的Connection,名称格式为Query - [查询名](比如Query名为"销售数据",对应的Connection名就是"Query - 销售数据"),这就是你遇到名称不一致的原因。

解决代码中的刷新问题

你当前代码里直接用q.Name匹配Connection会失败,因为两者名称规则不同。可以通过以下方式找到Query对应的Connection并刷新:

方案1:按Connection名称前缀匹配

遍历Connections集合,找到名称符合默认生成规则的连接:

Sub EditAllWorkbookFormuals(Order As String)
    Dim q As Query
    Dim conn As WorkbookConnection
    
    For Each q In ThisWorkbook.Queries
        ' 更新Query公式
        q.Formula = NewQuery(q.Formula, Order)
        
        ' 查找对应Connection并刷新
        For Each conn In ThisWorkbook.Connections
            ' 匹配默认生成的Connection名称格式
            If conn.Name = "Query - " & q.Name Then
                conn.Refresh
                Exit For
            End If
        Next conn
    Next q
End Sub

方案2:通过Connection的OLEDBConnection属性关联

每个基于Query的Connection,其OLEDBConnection.CommandText会包含Query的唯一标识,可通过该标识匹配:

Sub EditAllWorkbookFormuals(Order As String)
    Dim q As Query
    Dim conn As WorkbookConnection
    
    For Each q In ThisWorkbook.Queries
        q.Formula = NewQuery(q.Formula, Order)
        
        For Each conn In ThisWorkbook.Connections
            If conn.Type = xlConnectionTypeOLEDB Then
                ' 检查CommandText是否包含当前Query的ID
                If InStr(conn.OLEDBConnection.CommandText, q.ID) > 0 Then
                    conn.Refresh
                    Exit For
                End If
            End If
        Next conn
    Next q
End Sub

补充说明

  • 若无需精准匹配单个Connection,直接调用ThisWorkbook.RefreshAll即可一次性刷新所有Queries和Connections,代码更简洁。
  • 不要直接调用q.Refresh,因为Query仅负责存储查询逻辑,数据刷新到工作表必须通过对应的Connection完成。

内容的提问来源于stack exchange,提问作者Svein Arne Hylland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:25:31