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

时间:2018-08-29 00:18:38

标签: excel vba excel-vba pivot-table

我有一个启用宏的模板,其中包含很多需要手动更新的数据透视表(包括源数据更改) 几天前,我正在使用此代码解决方案,实际上效果很好

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")

有什么主意我想念的东西,做错了什么或没有注意到而改变了吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

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