首页 > 解决方案 > 使用 VBA 刷新单个查询的最佳选择

问题描述

我有一个包含 4-6 个查询的工作簿,我只想用 VBA 刷新 6 个中的 1 个。我的问题是,我是否使用下面最快的选项?

不,我不想在 Excel 中使用“全部刷新/刷新”按钮,我需要将其包含在子目录中。

代码:

    ThisWorkbook.Connections("Query - Raw").OLEDBConnection.refresh

    ' THESE ALSO WORK
    ' ActiveWorkbook.RefreshAll
    ' Selection.ListObject.QueryTable.refresh BackgroundQuery:=False

这些不起作用:

    ActiveWorkbook.Connections("Raw").refresh
    ThisWorkbook.Connections("Raw").refresh

提前感谢您的友好回答。

标签: excelvba

解决方案


最快的应该是按名称刷新该特定查询。

ThisWorkbook.Connections("YourOLEDBconnection").OLEDBConnection.refresh

这将是一个较小的调用堆栈,但不会太多/如果有任何明显的时间差异。它也只关注连接打开、刷新、关闭路径。

就像是:

ThisWorkbook.Worksheets("SheetName").ListObjects("query table name").QueryTable.refresh BackgroundQuery:=False 

我认为会有更长的调用堆栈对顶部显示的连接刷新进行额外调用。您也可能会产生与表格本身相关的少量开销(任何重新绘制的格式等)。

您可以对各种方法进行计时,并寻找最佳的中值刷新时间并采用该方法。


推荐阅读