Search Contextures Sites ![]()
Excel Pivot Table Tutorial -- Printing
- Check for Pivot Items before Printing
- Print Pivot Table for each Page Item
- Print Pivot Chart for each Page Item
- Print Pivot Table for each Page Item - Multiple Page Fields
- Pivot Table Tutorial List
Download the zipped sample file for this pivot table tutorial
Print Pivot Table for Each Page Item - Multiple Page Fields
The following code will print the pivot table for each combination of page items. If PrintFlag is not set to true, descriptive information is written to the PageItemList worksheet.
Option Compare Text Public mrow As Integer Public PrintFlag As Boolean '========================================== Sub PrintAllPages() 'pivot table tutorial by contextures.com 'from code posted by Tom Ogilvy 'September 5 2004 Dim holdSettings Dim ws As Worksheet Dim wsPT As Worksheet Set ws = Worksheets("PageItemList") 'sheet for page items Set wsPT = Worksheets("Pivot") 'sheet with PivotTable mrow = 0 If MsgBox("Print?", vbYesNo, "Print?") = vbYes Then PrintFlag = True Else PrintFlag = False MsgBox "Page field items will be listed on sheet " & ws.Name End If If Not PrintFlag Then ws.Cells(1, 1).CurrentRegion.Clear End If Set PvtTbl = wsPT.PivotTables(1) wsPT.Activate If PvtTbl.PageFields.Count = 0 Then MsgBox "The PivotTable has no Pages" Exit Sub End If With PvtTbl ReDim holdSettings(1 To .PageFields.Count) I = 1 For Each PgeField In .PageFields holdSettings(I) = PgeField.CurrentPage.Name I = I + 1 PgeField.CurrentPage = PgeField.PivotItems(1).Name Next PgeField End With PvtPage = 1 PvtItem = 1 DrillPvt oTable:=PvtTbl, Ipage:=PvtPage, wksht:=ws I = 1 For Each PgeField In PvtTbl.PageFields PgeField.CurrentPage = holdSettings(I) I = I + 1 Next PgeField End Sub '=========================================== Sub DrillPvt(oTable, Ipage, wksht) 'pivot table tutorial by contextures.com 'Debug.Print "in DrillPvt, page:=" & Ipage & " Page Item: " & _ ' oTable.PageFields(Ipage).CurrentPage & " " & mrow If Ipage = oTable.PageFields.Count Then With oTable For I = 1 To .PageFields(Ipage).PivotItems.Count .PageFields(Ipage).CurrentPage = _ .PageFields(Ipage).PivotItems(I).Name mrow = mrow + 1 slist = "" For j = 1 To .PageFields.Count slist = slist & .PageFields(j).CurrentPage & " " Next j ' Debug.Print slist If PrintFlag Then '' ActiveSheet.PrintOut 'print the sheet ActiveSheet.PrintPreview 'preview -- for testing Else For j = 1 To .PageFields.Count wksht.Cells(mrow, j).Value = _ .PageFields(j).CurrentPage.Name Next j End If Next I End With For I = oTable.PageFields.Count - 1 To 1 Step -1 For j = 1 To oTable.PageFields(I).PivotItems.Count If oTable.PageFields(I).CurrentPage = _ oTable.PageFields(I).PivotItems(j).Name Then CurrItem = j Exit For End If Next j If CurrItem <> oTable.PageFields(I).PivotItems.Count Then oTable.PageFields(I).CurrentPage = _ oTable.PageFields(I).PivotItems(CurrItem + 1).Name Ipage = I + 1 DrillPvt oTable, Ipage, wksht Else If I <> 1 Then oTable.PageFields(I).CurrentPage = _ oTable.PageFields(I).PivotItems(1).Name Else Exit Sub End If End If Next I Else DrillPvt oTable, Ipage + 1, wksht End If End SubDownload the zipped sample file for this pivot table tutorial
Pivot Table Tutorial List
![]()
![]()
Contextures Inc., Copyright © 2009.
All rights reserved.
Last updated:
February 6, 2010 1:27 AM