我有一个模板工作簿,其中有几个数据表连接到sql连接,以及一些数据透视表谁的来源是通过带来的数据。
我的印象是ActiveWorkbook.RefreshAll
将更新所有连接,然后更新透视表。这实际上是当我手动运行刷新时发生的事情。然而,当我运行VBA(它实际上在Access中,但被正确引用等)时,它更新连接,但不更新透视表?
我在RefreshAll
之后尝试了DoEvents
,没有效果。
我现在唯一的选择是在所有工作表、数据源、透视缓存中运行For each
并以这种方式刷新它们吗?
4条答案
按热度按时间nnt7mjpx1#
ActiveWorkbook.RefreshAll实际上执行RefreshAll连接和透视表。但是,在您的方案中,透视表可能基于您必须首先刷新的数据。透视表将在数据尚未加载时刷新,因此出现意外行为。
对此有多种解决方案:
代码:
或者只刷新pivotcaches(效率更高,尤其是当多个表使用同一个缓存时):
dgjrabp22#
我已使用以下方法解决了此问题
jm81lzqq3#
我已经通过在代码中添加一个简单的“Calculate”来解决这个问题。
xesrikrc4#
我在通过宏复制和保存工作簿时遇到了这个问题,并且在不同的数据透视表/缓存刷新方面没有什么运气,但在更改每个数据透视表的SaveData属性方面找到了运气。以防有人像我一样阅读此内容并正在寻找其他方法进行尝试。