Изменить сводные исходные данные через код VBA - PullRequest
0 голосов
/ 29 августа 2018

У меня есть шаблон с поддержкой макросов, который включает в себя множество сводных таблиц, которые необходимо обновить вручную (включая изменение источника) Несколько дней назад я работал с этим решением для кода, которое на самом деле работало так хорошо

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), но я все еще вижу это раздражающее сообщение.

Я также проверил, и ни одна из сводных таблиц, ни Sheet не изменили свое имя, поэтому я думаю, что это не одна из проблем.

Кроме того, я изменил диапазоны для включения и игнорирования заголовков таблицы и до сих пор ничего.

Также (x3) те же диапазоны используются в других модулях для выполнения некоторого форматирования ячеек

Отладчик всегда останавливается на первой сводной таблице

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

Есть идеи, что я упускаю или неправильно делаю или изменил, не заметив?

Спасибо за ваше время.

1 Ответ

0 голосов
/ 30 августа 2018

Я наконец нашел проблему. У меня были некоторые слайсеры, которые сделали код неудачным. Все, что мне нужно было сделать, это стереть их, а затем саб снова заработал

...