If you have multiple pivot tables and lists in an Excel file, you might need to identify which data source each pivot table uses. This macro will list all pivot tables, with source , or MDX, for OLAP-based pivot tables.
List All Pivot Tables Macro
The following code checks for at least one pivot table in the workbook. If there aren’t any pivot tables, the macro stops.
If there’s at least one pivot table, the macro adds a new worksheet to the workbook, with a list of all pivot tables, the sheet name where they’re located, and their data source (non-OLAP), or MDX query (OLAP-based, such as pivot tables added to the Data Model).
NOTE: If you want manually locate and change the source data, go to the pivot table source data page.:
How to Use the Macro
Add this code to a regular code module in your workbook, and to run the code, follow these steps
- On the Excel Ribbon, click the View tab
- At the far right, click Macros
- Select this macro in the list, and click the Run button
Macro – List All Pivot Tables
Here is the code for the macro to list all pivot tables with source of MDX information.
Sub PivotSourceListAllWithMDX() Dim wb As Workbook Dim ws As Worksheet Dim wsList As Worksheet Dim pt As PivotTable Dim lPT As Long Dim strMDX As String Dim strSource As String Dim wMax As Long Dim wsPT As Worksheet Dim PTCount As Long On Error Resume Next Set wb = ActiveWorkbook For Each wsPT In wb.Sheets If wsPT.PivotTables.Count Then PTCount = PTCount + 1 End If If PTCount > 0 Then Exit For Next wsPT If PTCount = 0 Then MsgBox "No pivot tables in this workbook" Exit Sub End If Set wsList = Worksheets.Add With wsList .Range(.Cells(1, 1), .Cells(1, 4)).Value _ = Array("Sheet", "PivotTable", _ "Source Data", "MDX Query") End With lPT = 2 wMax = 50 For Each ws In wb.Worksheets For Each pt In ws.PivotTables If pt.PivotCache.OLAP = False Then strSource = pt.SourceData strMDX = "" Else strSource = "OLAP" strMDX = pt.MDX End If With wsList .Range(.Cells(lPT, 1), _ .Cells(lPT, 4)).Value _ = Array(ws.Name, pt.Name, _ strSource, strMDX) End With lPT = lPT + 1 Next pt Next ws With wsList .Columns("A:D").EntireColumn.AutoFit .Columns("A:D").VerticalAlignment = xlTop .Rows(1).Font.Bold = True With .Columns(4) If .ColumnWidth > wMax Then .ColumnWidth = wMax End If .WrapText = True End With End With End Sub
More Pivot Table Source Data Macros
There are more pivot table source data macros on my Contextures website. You can also download an Excel workbook with sample pivot tables, and the macros, to test them.
You can also get details on how to Fix Pivot Table Source Data, and a macro to quickly unpivot Excel data, so it’s ready to use for a pivot table.
______________________
List All Pivot Tables with Source or MDX
______________________