sql - 用于更新 Excel 数据透视表的 VBS 脚本
问题描述
我正在使用 VBS 脚本从任务调度程序运行。它运行 .xlsm,其中包含 sheet1 上的数据(来自 SQL 的视图)和带有数据透视表的 sheet2。
当我运行 .xlsm 时,来自表更新的数据(我有一个 refreshall 并计算 VBA)
当我运行 VBS 时,Excel 不会更新。
VBS 中是否有任何内容阻止 Excel 文件正确更新或 SQL 数据表不更新并且数据透视表更新而该表中的值未更新?
如何解决这个问题?
这是我的VBS
Dim ObjExcel, ObjWB
Set ObjExcel = CreateObject("excel.application")
Set ObjWB = ObjExcel.Workbooks.Open("C:\ENG\Apps\test.xlsm")
ObjWB.Close False
ObjExcel.Quit
Set objFileName = Nothing
Set ObjExcel = Nothing
解决方案
我有一个类似的设置,我的 VBScript 将打开文件并刷新所有文件,包括 SQL 连接和所有数据透视表,首先我会ObjWB.RefreshAll
在关闭打开的文件之前添加代码,而且它似乎ObjWB.Close False
会在不保存更改的情况下关闭文件。
我还必须确保 Excel 中的查询连接已选中以下设置“全部刷新时刷新此连接”:
另外,为了真正确保所有内容都得到了刷新,我在工作簿中有以下代码,我必须确保在刷新时将 Background Refresh 选项设置为 False:
ThisWorkbook.Worksheets("Status Report").Range("A1").ListObject.QueryTable.Refresh BackgroundQuery:=False
Application.EnableEvents = False
ThisWorkbook.RefreshAll
'Refresh all pivot tables
For Each pc In ThisWorkbook.PivotCaches
pc.Refresh
Next pc
For Each pt In ThisWorkbook.PivotTables
pt.Refresh
Next pt
Application.EnableEvents = True
推荐阅读
- python - 我怎样才能做到这一点,以便在使用 data.remove 函数时,即使python中没有数字,它也会继续删除?
- regex - 设置 perl 正则表达式搜索从长字符串中的给定位置开始
- typo3 - TYPO3 / Fluid:FluidEmail 模板中的内联 Viewhelper 表示法
- javascript - GraphQL 错误:无法为不可为空的字段 Mutation.deleteComment 返回 null
- python - 致命的 Python 错误:init_fs_encoding: failed to get the Python codec of the filesystem encoding, when trying to start uwsgi
- angular - 带有 onSelectionChange 事件的 Angular ReUsable mat-select 组件
- drop-down-menu - 如何在 PowerBI Desktop 中为表添加切换
- python - 从 Pandas 改进的行中分配变量
- arcgis - AGSMAPView 标注未显示在触摸点上
- python - cumtrapz 的积分偏移量(python/scipy)