Jak odświeżyć wszystkie tabele przestawne makrem w VBA?
Odświeżanie tabel przestawnych VBA to dobry sposób, by zautomatyzować nasze aplikacje. Naszym zadaniem jest odświeżenie wszystkich tabel przestawnych w skoroszycie Excel. Posłuży nam do tego proste makro. Jeśli nie ma dla nas większego znaczenia to, czy odświeżamy tabele przestawne, czy też połączenia danych, możemy skorzystać z poniższego przykładu. Skrypt odświeży wszystkie połączenia danych oraz tabele przestawne w naszym skoroszycie.
Sub RefreshAll() ActiveWorkbook.RefreshAll End Sub
Samo działanie makra możemy porównać do działania przycisku „Odśwież” w zakładce „Dane”.

W przypadku, gdybyś chciał odświeżać tylko i wyłączenie tabele przestawne, konieczne było by powielenie wiele razy skryptu odświeżającego zaadresowane tabele. Skrypt wymaga podania nazwy tabeli przestawnej, którą chcemy odświeżyć. Nazwę tą znajdziemy w zakładce „OPCJE” po zaznaczeniu danej tabeli przestawnej:
Sub RefreshOnePivot() ActiveSheet.PivotTables("Pivot_tab_name_1").PivotCache.Refresh End Sub
Jeśli nasz raport zawiera więcej tabel przestawnych lub też istnieje możliwość, że w przyszłości liczba tych tabel się zwiększy, możemy zastosować makro, które wyszukuje wszystkie tabele przestawne w naszym skoroszycie, a następnie je odświeża. Zastosowanie poniższego przykładu jest najbardziej polecane:
Sub RefreshAllPivot() Dim PT As PivotTable Dim WS As Worksheet For Each WS In ThisWorkbook.Worksheets For Each PT In WS.PivotTables PT.RefreshTable Next PT Next WS End Sub

Jeśli chciałbyś znaleźć również makro odświeżające połączenia danych będące źródłem dla Twoich tabel przestawnych, to rozwiązanie znajdziesz w tym artykule. Poniżej plik z przykładem: Makro odświeżanie tabel przestawnych VBA: