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

Power Query引用同工作簿DataTable不更新,如何无需保存同步刷新?

Power Query汇总视图无法读取未保存刷新数据的解决办法

问题描述

我有一个Power Query,输入特定条件并点击刷新后可从其他工作簿拉取数据,存入名为DataTable的表格,这部分功能正常。但我想在另一标签页用Power Query生成汇总视图,不想重复编写代码,而是基于已运行的DataTable结果生成。问题在于,该汇总查询始终使用工作簿中已保存的数据,而非刚刷新的DataTable数据。

示例代码:

let
    Source = Excel.Workbook(File.Contents("\\servername\path\thisworkbook.xlsm"), null, true),
    Data_Table = Source{[Item="DataTable",Kind="Table"]}[Data],
    ...

尽管目标表格正确,但只有刷新DataTable并保存文件后,汇总查询才会生效。希望无需保存即可一次性刷新所有查询,询问是否有强制更新连接或数据的方法。

解决方案

1. 直接引用当前工作簿的表格对象

不要通过Excel.Workbook(File.Contents(...))读取本地文件的方式获取数据,改用Excel.CurrentWorkbook()直接引用内存中的表格,这样汇总查询会直接读取刚刷新的DataTable数据,无需依赖保存后的文件内容。修改后的代码示例:

let
    Source = Excel.CurrentWorkbook(){[Name="DataTable"]}[Content],
    ...

2. 配置查询依赖关系

设置汇总查询依赖于DataTable对应的源查询,确保刷新顺序正确:

  • 打开Power Query编辑器,选中汇总查询
  • 点击菜单栏的查询 > 属性
  • 在弹出窗口中勾选此查询依赖于其他查询,添加DataTable对应的源查询

这样刷新所有查询时,Excel会先完成DataTable的刷新,再自动执行汇总查询,保证数据是最新的。

3. 用VBA按顺序批量刷新(可选)

如果需要一键完成带顺序的刷新,可以编写简单的VBA宏:

Sub RefreshAllQueries()
    ' 刷新DataTable对应的查询
    ThisWorkbook.Connections("DataTable_Query").OLEDBConnection.Refresh
    ' 等待刷新完成再执行下一步
    Do Until ThisWorkbook.Connections("DataTable_Query").OLEDBConnection.Refreshing = False
        DoEvents
    Loop
    ' 刷新汇总查询
    ThisWorkbook.Connections("Summary_Query").OLEDBConnection.Refresh
End Sub

将代码中的DataTable_Query和Summary_Query替换为你实际的查询连接名称,运行宏即可按顺序完成刷新,无需保存文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:40:28