ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

为何不能正确打印?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-8-27 13:38 | 显示全部楼层 |阅读模式

我有一个Word文档,是技术说明书,想把它打印成小手册,就用A4纸张缩小打印,每面打印4页,正反两面都要打印,因为文档有120多页,为了便于打印后的页码不乱能够装订成册,就用VBA编写了一个打印程序,下面的TestPrt是我打印测试用的,我要的是这样的效果:在正面纸张按顺序打印出4,1,8,5这四页,在反面纸张按顺序打印出2,3,6,7这四页。但是当我运行TestPrt过程后却发现打印出来了好多页,根本不是我要的第4,1,8,5,2,3,6,7这8页,请各位高手指教!测试代码如下:

Sub TestPrt() PrintFuc "4,1,8,5,2,3,6,7", 2 End Sub Function PrintFuc(PrintStr As String, Row As Integer) '打印函数,Row=1为每面打两页,Row=2为每面打四页 Dim PrintYesOrNo As VbMsgBoxResult PrintYesOrNo = MsgBox("下面将要打印的页码是:" & PrintStr, vbOKCancel, "打印") If PrintYesOrNo = vbOK Then Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _ wdPrintDocumentContent, Copies:=1, Pages:=PrintStr, PageType:= _ wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:= _ True, PrintToFile:=False, PrintZoomColumn:=2, PrintZoomRow:=Row, _ PrintZoomPaperWidth:=11907, PrintZoomPaperHeight:=16839 Else MsgBox "您取消了打印!" End If End Function

下面附上我的技术文档(共四个文件,下载解压后放在同一个文件夹,并运行“合并.bat”即可:

KeqF1eM3.rar (127 Bytes, 下载次数: 17)

Zvgpcma8.rar

216.34 KB, 下载次数: 16

为何不能正确打印?

orb8HCJa.rar

217.07 KB, 下载次数: 18

为何不能正确打印?

Gc8hVag4.rar

212.89 KB, 下载次数: 18

为何不能正确打印?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-29 15:50 | 显示全部楼层
可怜啊!这个帖子孤孤零零地挂在这里好几天了,也没有见到哪位绿林好汉出手相助。各位,该出手时就出手吧!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-8-31 14:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
望眼欲穿啊!

TA的精华主题

TA的得分主题

发表于 2005-9-1 07:08 | 显示全部楼层
以下是引用1976yuan在2005-8-31 14:10:26的发言: 望眼欲穿啊!

我最近非常忙,不到之处,请大家原谅。

你的这个程序,至少在我的打印机中,有问题,我不知道你的打印机是否支持直接双面打印,而非手动双面打印。

在手动双面打印中,页序是个问题,缩放也是个问题。

我未经更细致的测试,简单地改了一下,在A4纸中打印成功。(此代码中,忽略了缩放高度与缩放宽度,你可据实清添加此两项参数)

你可以将需要打印的正反面全部页码次序按英文分号分隔后进行打印,以下代码供参考:

'* +++++++++++++++++++++++++++++ '* Created By I Love You_Word!@ExcelHome 2005-9-1 07:07:02 '仅测试于System: Windows NT Word: 10.0 Language: 2052 '№ 0003^The Code CopyIn [ThisDocument-ThisDocument]^' '* -----------------------------

Option Explicit Sub TestPrt() '注意正面打与反面打之间以英文分号为分隔符 PrintFuc "4,1,8,5;2,3,6,7", 2 End Sub '---------------------- Function PrintFuc(PrintStr As String, Row As Integer) '打印函数,Row=1为每面打两页,Row=2为每面打四页 Dim PrintYesOrNo As VbMsgBoxResult, MyArray() As String, i As Integer '如果取消则退出 PrintYesOrNo = MsgBox("下面将要打印的页码是:" & PrintStr, vbOKCancel, "打印") If PrintYesOrNo = vbCancel Then MsgBox "您取消了打印!", vbExclamation: Exit Function '以分号为分隔符,取得数组 MyArray() = VBA.Split(PrintStr, ";") '在数组下标与上标之间循环 For i = 0 To UBound(MyArray) '如果为奇数则提示调整纸面 If i Mod 2 = 1 Then MsgBox "请调整纸张方向,以便反面打印,调整结束后按确认继续打印!", vbOKOnly Application.PrintOut Range:=wdPrintRangeOfPages, Copies:=1, Pages:=MyArray(i), PageType:=wdPrintAllPages, PrintZoomColumn:=2, PrintZoomRow:=Row Next End Function '----------------------

[此贴子已经被作者于2005-9-2 7:21:00编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-22 04:23 , Processed in 0.040060 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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