|
如果打印小小册子,怎么办,比如把文档缩印到A4的纸上,并且要求正反两面,这个时候,必须得借助vba来实现了
下面这一段是把当前页面的8页缩印到A4纸上,当奇数页打印完全后,把打印出来的纸张按出来的顺序(注意不要改变),仍然让先出来的那一段先进去,这个时候,允许下面的程序就可以了:
Sub 打印kp81()
'
' 打印kp81 宏
'取得当前文档的总页数
iTotalPages = ActiveDocument.ComputeStatistics(wdStatisticPages)
'得到方面打印的页码顺序fmdy:
If iTotalPages = 8 Then f = "8,6,4,2"
If iTotalPages = 12 Then f = "8,6,4,2,12"
If iTotalPages = 16 Then f = "8,6,4,2,16,14,12,10"
If iTotalPages = 32 Then f = "24,22,20,18,32,30,28,26,8,6,4,2,16,14,12,10"
If iTotalPages = 80 Then f = "72,70,68,66,80,78,76,74,56,54,52,50,64,62,60,58,40,38,36,34,48,46,44,42,24,22,20,18,32,30,28,26,8,6,4,2,16,14,12,10"
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:= _
wdPrintOddPagesOnly, ManualDuplexPrint:=False, Collate:=True, Background _
:=True, PrintToFile:=False, PrintZoomColumn:=4, PrintZoomRow:=2, _
PrintZoomPaperWidth:=11907, PrintZoomPaperHeight:=16839
Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:=f, PageType:= _
wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
True, PrintToFile:=False, PrintZoomColumn:=4, PrintZoomRow:=2, _
PrintZoomPaperWidth:=11907, PrintZoomPaperHeight:=16839
End Sub
这个程序的缺点是:
1.如果文档有分节,这个时候打印错误,还不能根据分节来自动得到反面的页面顺序号。
2.不能处理任意页面数的问题,比如5,1000000,等等,只是根据自己的需要输入了特例。
3.页面反面打印序号(f)没有和PrintZoomColumn, PrintZoomRow关联起来,很弱!
这些弱点希望能得到网上高手的改变和指教! |
|