excel - 使用 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
提前感谢您的友好回答。
解决方案
最快的应该是按名称刷新该特定查询。
ThisWorkbook.Connections("YourOLEDBconnection").OLEDBConnection.refresh
这将是一个较小的调用堆栈,但不会太多/如果有任何明显的时间差异。它也只关注连接打开、刷新、关闭路径。
就像是:
ThisWorkbook.Worksheets("SheetName").ListObjects("query table name").QueryTable.refresh BackgroundQuery:=False
我认为会有更长的调用堆栈对顶部显示的连接刷新进行额外调用。您也可能会产生与表格本身相关的少量开销(任何重新绘制的格式等)。
您可以对各种方法进行计时,并寻找最佳的中值刷新时间并采用该方法。
推荐阅读
- javascript - 对自定义 react-select 样式对象的内联更新
- javascript - Google Apps 脚本返回 null
- python - 使用 Alamofire 连接到本地主机服务器(python)
- reactjs - 为什么我的 React 应用程序没有部署在 GitHub 上
- sql - 在 SQLite 中查询多个表时如何累积匹配?
- html - 图片VUE中“src”的动态变化
- php - 文件/媒体无法通过 Codeignitator 中的 URL 公开访问
- php - 为什么 authorize() 不能像在开发环境中那样在生产环境中工作?
- numpy - 如何用 numpy 制作一个简单的 Vandermonde 矩阵?
- c - 问题:奖学金捐赠基金第 2 部分 (fund2.c)