How to refresh all PivotTables in a workbook using VBA?

To refresh all PivotTables in an Excel workbook using VBA, you can create a simple macro that loops through each worksheet and refreshes each PivotTable. Here’s a step-by-step guide on how to do this:

     Sub RefreshAllPivotTables()
         Dim ws As Worksheet
         Dim pt As PivotTable

         ' Loop through each worksheet in the workbook
         For Each ws In ThisWorkbook.Worksheets
             ' Loop through each PivotTable in the worksheet
             For Each pt In ws.PivotTables
                 ' Refresh the PivotTable
                 pt.RefreshTable
             Next pt
         Next ws
     End Sub
  • Open the Visual Basic for Applications (VBA) Editor:
    • Press `ALT + F11` in Excel to open the VBA editor.
  • Insert a New Module:
    • In the VBA editor, right-click on any of the items for your workbook (usually under “VBAProject (YourWorkbookName)”) in the Project Explorer.
    • Choose `Insert` > `Module`. This will create a new module.
  • Add the VBA Code:
    • In the module window, you can write the following code:
  • Run the Macro:
    • You can run this macro by pressing `F5` in the VBA editor while the code window is active, or you can return to Excel and run it via the `Macros` dialog (`ALT + F8`), selecting `RefreshAllPivotTables`, and clicking `Run`.

This macro will efficiently refresh all the PivotTables in each worksheet of the active workbook, ensuring your data is up-to-date based on the source data.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project