另一个Excel VBA宏按钮问题。
我正在尝试按下按钮来刷新工作表上的所有枢轴(有四个)。我之前去过StackOverflow并收到了一个运行良好的解决方案。我使用了之前提供的代码并为新工作簿更新了它,但是下面的代码失败了.ChangePivotCache PvtCache:
getPis() {
this.pisService.getPis()
.subscribe(
pis => { this.pis = pis;},
error => this.errorMessage = <any>error);}
唯一的区别是工作簿发生了变化,现在我想刷新4个枢轴而不是2个 - 这可能是问题吗?
在屏幕截图下方,您可以看到工作表。 &#34; OTR_Promo_List_ADV-2017&#34;是数据库。数据透视表有默认命名,我没有更改名称(即PivotTable1,PivotTable2 ......)
谢谢!
答案 0 :(得分:0)
用于刷新一张表上所有数据透视表的代码似乎过于复杂。我不太明白你为什么要使用.ChangePivotCache
。它更改指定数据透视表的数据源。如果您只想刷新数据透视表,那就完全没有根据了。
您可以使用Excel Table对象作为数据透视表的数据源,然后进行简单的刷新就足够了。或者,如果您不想使用表格(尽管您可能真的想查看,显而易见),您可以使用动态范围名称来定义数据透视表源。使用这两种技术,您只需刷新数据透视表,就不必使用VBA操纵数据透视缓存。
使用表格或动态范围名称作为数据透视表的来源,您可以循环浏览工作表上的所有数据透视表,并使用以下代码中的代码刷新它们:
Sub RefreshPivotsOnSheet()
Dim ws As Worksheet
Dim pt As PivotTable
Set ws = Worksheets("MySheet")
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
End Sub
编辑:如何将Excel Tables设置为数据透视表的数据源:使用Ctrl + T或Insert&gt;将源数据转换为表格。表。然后编辑数据透视表数据源并将其指向刚刚创建的Excel表。
答案 1 :(得分:-1)
我能够结束这个话题。我在其他地方找到了一个简单的宏,只说:
Sub REFRESH()
'
' REFRESH Macro
'
'
ActiveWorkbook.RefreshAll
End Sub
似乎可以解决这个问题。
感谢您的所有投入!