Используя некоторые примеры, которые я нашел в Интернете, я написал следующий VBA, который выполняет то, что мне нужно. Я разместил на сводной странице пустую сводную таблицу и кнопку, связанную с этим макросом, которая обновляет все другие сводные таблицы с теми же фильтрами.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это не будет работать для полей, в которых выбрано «(Все)». Мне не нужно было заглядывать, но можно изменить следующий код, добавив поддержку «(Все)».
Sub UpdateAllPivotTables() Dim ws As Worksheet Dim wsMain As Worksheet Dim ptMain As PivotTable Dim pt As PivotTable Dim pfMain As PivotField Dim piMain As PivotItem Dim pi As PivotItem Dim pf As PivotField Dim hadError As Boolean On Error Resume Next Set wsMain = ActiveSheet Set ptMain = ActiveSheet.PivotTables(1) Application.EnableEvents = False For Each ws In ThisWorkbook.Worksheets If (Not (ws.Name = wsMain.Name)) Then ws.Unprotect For Each pt In ws.PivotTables pt.ManualUpdate = True For Each pf In pt.PageFields For Each pi In pf.PivotItems If (Not (pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible)) Then pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible End If Next pi Next pf pt.ManualUpdate = False Next pt 'ws.Protect End If Next ws Application.EnableEvents = True End Sub