ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2472|回复: 4

[原创] word双面打印代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-10 16:15 | 显示全部楼层 |阅读模式
本帖最后由 hank2611 于 2015-10-10 22:21 编辑

模仿excel文件的双面打印宏 做了一个 word双面的宏。
  1. Sub 半自动双面打印()
  2.     Dim myPages As Integer
  3.     Dim myBottonNum As Integer
  4.     Dim myPrompt1 As String
  5.     Dim myPrompt2 As String
  6.     Dim i As Integer, s As String
  7.    
  8.     myPrompt1 = "在打印时发生错误,请检查你的打印机设置"
  9.         myPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
  10.         ' 取得文档页数
  11.          '===============奇数页打印===========
  12.         s = ""
  13.         i = 1
  14.         Do While i <= myPages
  15.             s = s & i & ","
  16.             i = i + 2
  17.         Loop
  18.         ss = Left(s, Len(s) - 1)  ' 去掉最后一个逗号
  19.          Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  20.                 wdPrintDocumentContent, Copies:=1, Pages:=ss, PageType:= _
  21.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  22.                 True, PrintToFile:=False, PrintZoomColumn:=2, PrintZoomRow:=1, _
  23.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  24.    
  25.        '===============奇数页打印===========
  26.       
  27.        If myPages Mod 2 = 1 Then
  28.              i = myPages - 1
  29.              myPrompt2 = "请将出纸器中已打印好一面的纸取出(最后一页)并将其翻转后放回到送纸器中,然后按下""确定"",继续打印"
  30.    
  31.           Else
  32.              i = myPages
  33.              myPrompt2 = "请将出纸器中已打印好一面的纸取出并将其翻转后放回到送纸器中,然后按下""确定"",继续打印"
  34.    
  35.           End If
  36.       
  37.        myBottonNum = MsgBox(myPrompt2, 1 + 48) '提示用户取出纸张,确认后继续打印
  38.        If (myBottonNum = 1) Then
  39.           '===============偶数页打印===========
  40.          s = ""
  41.         Do While i >= 2
  42.             s = s & i & ","
  43.             i = i - 2
  44.         Loop
  45.         ss = Left(s, Len(s) - 1)   ' 去掉最后一个逗号
  46.          Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  47.                 wdPrintDocumentContent, Copies:=1, Pages:=ss, PageType:= _
  48.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  49.                 True, PrintToFile:=False, PrintZoomColumn:=2, PrintZoomRow:=1, _
  50.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  51.       
  52.              '===============偶数页打印===========
  53.     End If


  54. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-11 14:13 | 显示全部楼层
文件经测试不能正常打印。不知道什么原理,代码不结束,打印机就不开始工作。所以把上面的代码拆分为两个,先执行奇数,再执行偶数的。
也算方便。
有懂的可以解决一下吗。
  1. Sub 半自动双面打印奇数页()
  2.     Dim myPages As Integer
  3.     Dim myBottonNum As Integer
  4.     Dim myPrompt1 As String
  5.     Dim myPrompt2 As String
  6.     Dim i As Integer, s As String
  7.    
  8.     myPrompt1 = "在打印时发生错误,请检查你的打印机设置"
  9.         myPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
  10.         
  11.         ' 取得文档页数
  12.         
  13.         
  14.         If (myPages = 0) Then '如果为零,说明没有可打印内容,退出程序
  15.             MsgBox "Microsoft Word 未发现任何可以打印的内容", 0 + 48
  16.             Exit Sub
  17.         End If
  18.         
  19.         If (myPages = 1) Then '判断是否只有一页,如果是,只打印第一页,然后退出
  20.             Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  21.                 wdPrintDocumentContent, Copies:=1, Pages:="1", PageType:= _
  22.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  23.                 True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
  24.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  25.             If Err.Number = 1004 Then
  26.                 MsgBox myPrompt1, 0 + 48 '提示用户发生打印错误
  27.             End If
  28.             Exit Sub
  29.         End If
  30.          '===============奇数页打印===========
  31.         s = ""
  32.         i = 1
  33.         Do While i <= myPages
  34.             s = s & i & ","
  35.             i = i + 2
  36.         Loop
  37.         ss = Left(s, Len(s) - 1)  ' 去掉最后一个逗号
  38.          Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  39.                 wdPrintDocumentContent, Copies:=1, Pages:=ss, PageType:= _
  40.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  41.                 True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
  42.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  43.    
  44.        '===============奇数页打印===========
  45.       
  46.      
  47. End Sub


  48. Sub 半自动双面打印偶数页()
  49.     Dim myPages As Integer
  50.     Dim myBottonNum As Integer
  51.     Dim myPrompt1 As String
  52.     Dim myPrompt2 As String
  53.     Dim i As Integer, s As String
  54.    
  55.     myPrompt1 = "在打印时发生错误,请检查你的打印机设置"
  56.         myPages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
  57.         
  58.         ' 取得文档页数
  59.         
  60.         
  61.         If (myPages = 0) Then '如果为零,说明没有可打印内容,退出程序
  62.             MsgBox "Microsoft Word 未发现任何可以打印的内容", 0 + 48
  63.             Exit Sub
  64.         End If
  65.         
  66.         If (myPages = 1) Then '判断是否只有一页,如果是,只打印第一页,然后退出
  67.             Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  68.                 wdPrintDocumentContent, Copies:=1, Pages:="1", PageType:= _
  69.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  70.                 True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
  71.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  72.             If Err.Number = 1004 Then
  73.                 MsgBox myPrompt1, 0 + 48 '提示用户发生打印错误
  74.             End If
  75.             Exit Sub
  76.         End If
  77.          '===============奇数页打印===========
  78.       
  79.    
  80.        '===============奇数页打印===========
  81.       
  82.        If myPages Mod 2 = 1 Then
  83.              i = myPages - 1
  84.              myPrompt2 = "请将出纸器中已打印好一面的纸取出(最后一页)并将其翻转后放回到送纸器中,然后按下""确定"",继续打印"
  85.    
  86.           Else
  87.              i = myPages
  88.              myPrompt2 = "请将出纸器中已打印好一面的纸取出并将其翻转后放回到送纸器中,然后按下""确定"",继续打印"
  89.    
  90.           End If
  91.        DoEvents
  92.        myBottonNum = MsgBox(myPrompt2, 1 + 48) '提示用户取出纸张,确认后继续打印
  93.        If (myBottonNum = 1) Then
  94.           '===============偶数页打印===========
  95.          s = ""
  96.         Do While i >= 2
  97.             s = s & i & ","
  98.             i = i - 2
  99.         Loop
  100.         ss = Left(s, Len(s) - 1)   ' 去掉最后一个逗号
  101.          Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
  102.                 wdPrintDocumentContent, Copies:=1, Pages:=ss, PageType:= _
  103.                 wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _
  104.                 True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
  105.                 PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0
  106.       
  107.              '===============偶数页打印===========
  108.     End If
  109. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-3-7 21:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-11-20 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢楼主分享

TA的精华主题

TA的得分主题

发表于 2024-11-20 16:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 vistababy 于 2024-11-20 17:25 编辑

截屏_2024-11-20_16-43-25.jpg 截屏_2024-11-20_16-45-12.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-25 15:50 , Processed in 0.046322 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表