ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

中级问题,VBA能不能在打印前,取得要打印的份数,页码等信息?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-3-28 00:59 | 显示全部楼层 |阅读模式
中级问题,VBA能不能在打印前,取得要打印的份数,页码等信息?
起因是这样的
单位有台打印机,单面打印
同事打印时老是记得翻纸的面,却忘记了修改打印的纸
导致打印时,正反两面都打成了同样的内容
从而造成了纸张的浪费
作为一个VBA爱好者,我在想能不能通过VBA在打印时存一下当前打印的文件,页码
下次打印前和比较,如果页码和上次的相同,则弹窗警告修改

我找到了这样的事件
Private Sub Application_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
却没有在里面找到任何可以取得打印页码等信息的内容
一个一个的看到Document的属性,好象也没啥头绪
现求教大家:
如何才能在打印前取得页数,份数等信息,以便选择性放行或者弹窗警告


TA的精华主题

TA的得分主题

发表于 2015-3-28 09:52 | 显示全部楼层
ExecuteExcel4Macro("Get.Document(50)")
试试这个

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 16:26 | 显示全部楼层
本帖最后由 tan133 于 2015-3-28 16:37 编辑
ctp_119 发表于 2015-3-28 09:52
ExecuteExcel4Macro("Get.Document(50)")
试试这个

谢谢版主的及时回答
在WORD2010中,没有找到ExecuteExcel4Macro这个函数啊
仔细看了函数名,好象是支持EXCEL的
用EXCEL2010打开的一看,嘿,真的是支持EXCEL的
而且只是支持查看打印总数,
我要的效果是
假设原文档有1000页
打印的时候如果我选了 1-4,6-10,我就要获取这个1-4 6-10
或者有办法直接获取要打印的文档总页数,更好
请不吝赐教

TA的精华主题

TA的得分主题

发表于 2015-3-28 16:55 | 显示全部楼层
不熟悉word的VBA,不好意思!!!可以搜下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-3-28 17:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
还是非常感谢,但对C#不熟,不知道能不能重载PrintOut
beforePrint事件中,又没有页码相关的对象

TA的精华主题

TA的得分主题

发表于 2015-3-30 09:22 | 显示全部楼层
本示例打印活动文档的当前页面。

ActiveDocument.PrintOut Range:=wdPrintCurrentPage
本示例打印当前文件夹中的所有文档。Dir 函数用于返回所有扩展名为“.doc”的文件名。

adoc = Dir("*.DOC")
Do While adoc <> ""
    Application.PrintOut FileName:=adoc
    adoc = Dir()
Loop
本示例打印活动窗口中文档的前三页。

ActiveDocument.ActiveWindow.PrintOut _
    Range:=wdPrintFromTo, From:="1", To:="3"
本示例打印活动文档中的备注。

If ActiveDocument.Comments.Count >= 1 Then
    ActiveDocument.PrintOut Item:=wdPrintComments
End If
本示例将打印活动文档,每张纸上打印六页文档。

ActiveDocument.PrintOut PrintZoomColumn:=3, _
    PrintZoomRow:=2
本示例按实际尺寸的 75% 打印活动文档。

ActiveDocument.PrintOut _
    PrintZoomPaperWidth:=0.75 * (8.5 * 1440), _
    PrintZoomPaperHeight:=0.75 * (11 * 1440)

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-1 13:00 | 显示全部楼层
413191246se 发表于 2015-3-30 09:22
本示例打印活动文档的当前页面。

ActiveDocument.PrintOut Range:=wdPrintCurrentPage

谢谢你的解答,打印的代码我会,
我的问题的关键,
如果不能取得鼠标点击发送的打印指令有哪些页码,
那如何屏蔽系统本身的打印菜单并用我自己的菜单取代(2003估计也简单,RIBBON自带的菜单如何用代码屏掉?)
这样我就可以自己写一个打印窗口代替也就可以控制打印页数了

TA的精华主题

TA的得分主题

发表于 2015-4-2 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主,人们都想不打开文档而打印,但我觉得做不到,WORD2003总是打开文档后才打印。你的问题,我没看明白(我现在打印单个文档,都是按F9键,它代表《打印文档关闭不保存》宏)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-5-5 16:20 | 显示全部楼层
本帖最后由 tan133 于 2015-5-5 16:22 编辑
413191246se 发表于 2015-4-2 09:32
楼主,人们都想不打开文档而打印,但我觉得做不到,WORD2003总是打开文档后才打印。你的问题,我没看明白( ...

不是不打开文档操作
我的问题很简单,流程如下
一,我打开了某个文档,我要打印
二,我打印的时候要发送打印范围
三,如果,一文档400页,而我只需要其中一两页,忘记选范围,则会打全部400页,造成纸张的浪费
四,我就是想要在我点下打印指令,在系统开始打印,获取我发送的打印指令,防止各马大哈老是误操作,纸不算贵,可老是这么浪费也不好吧?

TA的精华主题

TA的得分主题

发表于 2015-5-5 20:35 | 显示全部楼层
楼主,最简单的办法是:你点:工具菜单——自定义——文件——把“打印..."这个按钮,拖动到工具栏上,并且编辑一下这个按钮,在原有图标的基础上,四周画上红色或蓝色,以后打印时,不要按第6个打印按钮,而直接按这个按钮,相当于按CTRL+P,就每次必选打印范围了!(另外,要是用自定义宏代替打印命令,也许可以,但屏蔽内部命令不好!)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 05:48 , Processed in 0.022739 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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