通过VBA代码更改数据透视源数据

问题描述 投票:0回答:1

我有一个启用宏的模板,其中包含许多需要手动更新的pivotTables(包括sourcedata更改)几天前我正在使用这个代码解决方案,实际上工作得很好

Sub Button12_Click()

    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("Pivots")

'CE OP Pivot Tables
    sh.PivotTables("PivotTable1"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable1").RefreshTable

    sh.PivotTables("PivotTable2"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable2").RefreshTable

    sh.PivotTables("PivotTable3"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable3").RefreshTable

    sh.PivotTables("PivotTable4"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable4").RefreshTable

    sh.PivotTables("PivotTable5"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable5").RefreshTable

    sh.PivotTables("PivotTable6"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable6").RefreshTable

    sh.PivotTables("PivotTable7"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable7").RefreshTable

    sh.PivotTables("PivotTable27"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")
    sh.PivotTables("PivotTable27").RefreshTable

'SLED Pivot Tables
    sh.PivotTables("PivotTable8"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable8").RefreshTable

    sh.PivotTables("PivotTable9"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable9").RefreshTable

    sh.PivotTables("PivotTable10"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable10").RefreshTable

    sh.PivotTables("PivotTable11"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable11").RefreshTable

    sh.PivotTables("PivotTable12"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable12").RefreshTable

    sh.PivotTables("PivotTable13"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable13").RefreshTable

    sh.PivotTables("PivotTable14"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable14").RefreshTable

    sh.PivotTables("PivotTable30"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="SLED_2_Table")
    sh.PivotTables("PivotTable30").RefreshTable

'CA Pivot tables
    sh.PivotTables("PivotTable15"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable15").RefreshTable

    sh.PivotTables("PivotTable16"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable16").RefreshTable

    sh.PivotTables("PivotTable17"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable17").RefreshTable

    sh.PivotTables("PivotTable18"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable18").RefreshTable

    sh.PivotTables("PivotTable19"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable19").RefreshTable

    sh.PivotTables("PivotTable20"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable20").RefreshTable

    sh.PivotTables("PivotTable21"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable21").RefreshTable

    sh.PivotTables("PivotTable31"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CA_2_Table")
    sh.PivotTables("PivotTable31").RefreshTable

'CE Future POs
    sh.PivotTables("PivotTable22"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable22").RefreshTable

    sh.PivotTables("PivotTable23"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable23").RefreshTable

    sh.PivotTables("PivotTable24"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable24").RefreshTable

    sh.PivotTables("PivotTable25"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable25").RefreshTable

    sh.PivotTables("PivotTable26"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable26").RefreshTable

    sh.PivotTables("PivotTable28"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable28").RefreshTable

    sh.PivotTables("PivotTable29"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable29").RefreshTable

    sh.PivotTables("PivotTable32"). _
    ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_Future_POs_Table")
    sh.PivotTables("PivotTable32").RefreshTable


End Sub

但是从今天早上开始,每次单击运行此宏的按钮时,我都会收到相同的消息

运行时错误5无效的过程调用或参数

到目前为止,我已经尝试使用一个表而不是一个范围(正如你在发布的代码中看到的那样。另外,范围名称完全相同,减去了_Table部分),但我仍然看到这个恼人的消息。

我也已经验证,没有任何数据透视表,也没有更改其名称,所以我认为这不是问题之一。

此外,我已经更改了范围以包括和忽略表的标题,但仍然没有。

另外(x3)在另一个模块上使用相同的范围来对单元格执行某些格式化

调试器始终在第一个数据透视表上停止

sh.PivotTables("PivotTable1"). _
ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:="CE_2_Table")

知道我错过了什么或者做得不对或没有注意到改变了吗?

谢谢你的时间。

excel vba excel-vba pivot-table
1个回答
0
投票

我终于找到了问题。我有一些切片器,这些切片器使代码失败。我所要做的就是擦掉它们,然后Sub再次工作

© www.soinside.com 2019 - 2024. All rights reserved.