当前位置:首页 > 软件教程 > Excel使用技巧 >

Excel数据透视表-如何实现打印

时间:2017-05-13  来源:中国好系统  阅读:统计中... 次  评论:0 次(查看

数据透视表 -- 打印


打印数据透视表页字段中的每个数据项
下面的代码将能够实现打印页字段中的每个数据项的功能(假定为一个页字段).请使用打印预览测试.准备打印时,请去掉ActiveSheet.PrintOut代码前的单引号,并在代码ActiveSheet.PrintPreview前添加一个单引号.
SubPrintPivotPages()
'打印数据透视表一个页字段下的每个数据项
'假设只有一个页字段存在
OnErrorResumeNext
DimptAsPivotTable
DimpfAsPivotField
DimpiAsPivotItem
Setpt=ActiveSheet.PivotTables.Item(1)
ForEachpfInpt.PageFields
ForEachpiInpf.PivotItems
pt.PivotFields(pf.Name).CurrentPage=pi.Name
'ActiveSheet.PrintOut'使用这个代码打印
ActiveSheet.PrintPreview'使用这个代码预览
Next
Nextpf
EndSub

打印数据透视表页字段下每个数据项的透视图
下面的代码将能够实现打印页字段中的每个数据项的透视图功能(假定为一个页字段).请使用打印预览测试.准备打印时,请去掉ActiveSheet.PrintOut代码前的单引号,并在代码ActiveSheet.PrintPreview前添加一个单引号.
SubPrintPivotCharts()
'printsachartforeachiteminthepagefield
DimptAsPivotTable
DimpfAsPivotField
DimpiAsPivotItem
Setpt=ActiveChart.PivotLayout.PivotTable
ForEachpfInpt.PageFields
ForEachpiInpf.PivotItems
pt.PivotFields(pf.Name).CurrentPage=pi.Name
'ActiveSheet.PrintOut
ActiveSheet.PrintPreview'打印预览测试
Next
Nextpf
EndSub

打印数据透视表的每个页数据项–多个页字段
下面代码将完成打印数据透视表页数据项的每个组合.如果PrintFlag不设置为true,描述信息将被写入PageItemList工作表.
OptionCompareText
PublicmrowAsInteger
PublicPrintFlagAsBoolean
'============
SubPrintAllPages()
'fromcodepostedbyTomOgilvy
'September52004
DimholdSettings
DimwsAsWorksheet
DimwsPTAsWorksheet
Setws=Worksheets("PageItemList")'sheetforpageitems
SetwsPT=Worksheets("Pivot")'sheetwithPivotTable
mrow=0
IfMsgBox("Print?",vbYesNo,"Print?")=vbYesThen
PrintFlag=True
Else
PrintFlag=False
MsgBox"Pagefielditemswillbelistedonsheet"&ws.Name
EndIf
IfNotPrintFlagThen
ws.Cells(1,1).CurrentRegion.Clear
EndIf
SetPvtTbl=wsPT.PivotTables(1)
wsPT.Activate
IfPvtTbl.PageFields.Count=0Then
MsgBox"ThePivotTablehasnoPages"
ExitSub
EndIf
WithPvtTbl
ReDimholdSettings(1To.PageFields.Count)
I=1
ForEachPgeFieldIn.PageFields
holdSettings(I)=PgeField.CurrentPage.Name
I=I+1
PgeField.CurrentPage=PgeField.PivotItems(1).Name
NextPgeField
EndWith

PvtPage=1
PvtItem=1
DrillPvtoTable:=PvtTbl,Ipage:=PvtPage,wksht:=ws
I=1
ForEachPgeFieldInPvtTbl.PageFields
PgeField.CurrentPage=holdSettings(I)
I=I+1
NextPgeField

EndSub
'=============
SubDrillPvt(oTable,Ipage,wksht)
'Debug.Print"inDrillPvt,page:="&Ipage&"PageItem:"&_
'oTable.PageFields(Ipage).CurrentPage&""&mrow
IfIpage=oTable.PageFields.CountThen
WithoTable
ForI=1To.PageFields(Ipage).PivotItems.Count
.PageFields(Ipage).CurrentPage=_
.PageFields(Ipage).PivotItems(I).Name
mrow=mrow+1
slist=""
Forj=1To.PageFields.Count
slist=slist&.PageFields(j).CurrentPage&""
Nextj
'Debug.Printslist
IfPrintFlagThen
''ActiveSheet.PrintOut'printthesheet
ActiveSheet.PrintPreview'preview--fortesting
Else
Forj=1To.PageFields.Count
wksht.Cells(mrow,j).Value=_
.PageFields(j).CurrentPage.Name
Nextj
EndIf
NextI
EndWith
ForI=oTable.PageFields.Count-1To1Step-1
Forj=1TooTable.PageFields(I).PivotItems.Count
IfoTable.PageFields(I).CurrentPage=_
oTable.PageFields(I).PivotItems(j).NameThen
CurrItem=j
ExitFor
EndIf
Nextj
IfCurrItem<>oTable.PageFields(I).PivotItems.CountThen
oTable.PageFields(I).CurrentPage=_
oTable.PageFields(I).PivotItems(CurrItem+1).Name
Ipage=I+1
DrillPvtoTable,Ipage,wksht
Else
IfI<>1Then
oTable.PageFields(I).CurrentPage=_
oTable.PageFields(I).PivotItems(1).Name
Else
ExitSub
EndIf
EndIf
NextI
Else
DrillPvtoTable,Ipage+1,wksht
EndIf
EndSub

------分隔线------
  • 网友评论
  • 软件教程分类
  • 热点专题推荐