ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

word内置对话框的问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-17 09:58 | 显示全部楼层

斑竹,我现在的问题就集中在:

想在用户调用打印的内置对话框之前做一些我自己的判断,请问斑竹有何好的建议?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-18 09:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

斑竹,我就想在word里解决问题啊!

我想实现的是:

只要用户调用了word自己的打印功能,就在此之前做我自己的判断!

TA的精华主题

TA的得分主题

发表于 2005-1-18 15:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我不是告诉你了吗,只要修改WORD命令就可以了。

我再送几个例子,你再看一下,体会一下。

在WORD中,我们可以通过修改WORD命令的方法,来方便地为WORD控件指定用户自定义的过程,完成或者转移(禁用)相应的内置方式.它的原理是利用相应宏名来置换过程的方法.在下面的三个部分中,我们可以体会其中的相同点与不同点.

'* +++++++++++++++++++++++++++++++++++++++

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Sub Example() Dim i As CommandBarControl For Each i In Application.CommandBars.FindControls If i.ID = 4 Then i.OnAction = "MySub" '指定宏名 End If Next End Sub '---------------------- Sub ResetSub() Dim i As CommandBarControl For Each i In Application.CommandBars.FindControls If i.ID = 4 Then 'ID=4相当于CTRL+P(文件/打印) i.OnAction = "" '恢复原有ID功能 End If Next End Sub '---------------------- Private Sub Document_Close() ResetSub '关闭文档后恢复 End Sub '---------------------- Private Sub Document_Open() Example '修改 End Sub '----------------------以上为第一部分

'----------------------以下为第二部分 Sub FilePrint() MySub End Sub '---------------------- Sub MySub() MsgBox "不能使用打印功能!" End Sub '----------------------该过程为公用部分

简析:在EXCEL中,我们只能通过FindControls(ID)的方法为原有程序修改命令指定宏过程;在WORD中,我们也可能通过该方法进行;但如果我们采取第二部分的话,更为简单,这就是所谓的修改WORD命令.当然一个名为MySub的过程可以省略,直接写在FilePrint宏中.

以下为实用修改WORD命令的一个例子(该例子放在自定义模板中)

'* +++++++++++++++++++++++++++++++++++++++

'^The Code CopyIn [ThisDocument-ThisDocument]^'

'* --------------------------------------------------------------------------

Sub FilePrint()'修改WORD命令(文件/打印:CTRL+P) Dim Pc As Integer, Var As Integer With Application.Dialogs(wdDialogFilePrint) If .Show = -1 Then Pc = .NumCopies '取得打印份数 Var = Me.Variables("PrintPageCount").Value '延续以前的打印份数 Me.Variables("PrintPageCount").Value = Pc + Var '至今共打印的张数 Me.Save '保存 MsgBox "目前累计打印份数为" & Me.Variables("PrintPageCount").Value End If End With End Sub '---------------------- Sub FilePrintDefault'修改WORD命令(常用工具栏/打印活动文档) ActiveDocument.PrintOut '默认打印 Me.Variables("PrintPageCount").Value = _ Me.Variables("PrintPageCount").Value + 1 Me.Save '保存 MsgBox "目前累计打印份数为" & Me.Variables("PrintPageCount").Value End Sub '---------------------- Private Sub Document_Open() On Error Resume Next Me.Variables.Add Name:="PrintPageCount" '预定一个文档变量 End Sub '----------------------

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 12:34 , Processed in 0.030617 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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