能够修改Word命令的VBA代码

2016-02-19 09:10 4 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐能够修改Word命令的VBA代码,无聊中的都看过来。

【 tulaoshi.com - Word教程 】

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

Private Sub Document_Close()

ResetSub ’关闭文档后恢复

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

Private Sub Document_Open()

Example ‘修改

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

以上为第一部分,以下为第二部分:

Sub FilePrint()

MySub

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

Sub MySub()

MsgBox "不能使用打印功能!"

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

该过程为公用部分

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

Sub FilePrintDefault’修改WORD命令(常用工具栏/打印活动文档)

ActiveDocument.PrintOut ‘默认打印

Me.Variables("PrintPageCount").Value = _

Me.Variables("PrintPageCount").Value + 1

Me.Save ‘保存

MsgBox "目前累计打印份数为" & Me.Variables("PrintPageCount").Value

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

Private Sub Document_Open()

On Error Resume Next

Me.Variables.Add Name:="PrintPageCount" ‘预定一个文档变量

End Sub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

如果快速得到WORD中对应命令的命令名称,有多种方法,一是使宏对话框中的WORD命令,我们可以知道所有WORD命令,还可以使用宏对话框中的ListCommands命令,将所有WORD命令自动列表;还可以使用自定义/命令/所有命令中获得;也可以通过插入域/MacroButton域中的宏名列表中获得;最方便的是使用CTRL+ALT+数字小键盘上的+号,当光标变成中国结时,点向所需按钮命令,即出现一个自定义对话框,在这个对话框中所显示的命令,就是你要的命令名称。

来源:http://www.tulaoshi.com/n/20160219/1589788.html

延伸阅读
标签: 电脑入门
下面的这一段宏代码,在Word环境下使用,其功能是,自动给word文档参考文献添加中括号或方括号 "AddMarkRef Macro Dim parag As Paragraph Dim selRge As Range Dim rge As Range Dim nField As Integer Dim nParag As Integer Set selRge = Selection.Range MsgBox "在使用宏代码之前您应先选择好参考文献?" ActiveDocumen...
标签: 电脑入门
通过以下的VBA代码,将其放到工作表的双击事件中,就能取到双击工作表的列标题(双击列的名字),当前列自动进行排序。 比如,将代码放在如下的事件中: Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub 代码如下: Dim YouRg As Range If Target.Column = Me.Cells (1,1).CurrentRegion.Columns.Count And Target...
标签: 电脑入门
①滚动行 Worksheets("Sheet1").Activate ActiveWindow.ScrollRow = 14 代码解释:上述代码的功能是,先激活Sheet1,将其作为活动工作表,然后,自动拖动垂直滚动条,将第14行拖到第一行的位置,即第一行至第13行将被拖到窗口中的上面,并看不到,而第14行则显示在可视窗口的最上面(在可视范围的第一行位置)。 与之相关的知识: ...
标签: 电脑入门
MyColumn=Target.Column获取活动单元格所在的列号 MyRow=Target.Row获取活动单元格所在的行号 工作表名.UsedRange.Rows.Count指定工作表已使用的行的总数 工作表名.UsedRange.Columns.Count指定工作表已使用的列的总数 工作表名.Cells(行号, 列号).Value获取指定工作表某个单元格的值 Worksheets(m).Cells(i, j).Value使用通用的序号方法...
标签: 电脑入门
以下的宏代码,其功能是,找到AB两列相同值,并存放到C列。 Sub MySubSearch() Dim i As Integer Dim c As Range For i = 2 To Sheet1.[B65536].End(xlUp).Row For Each c In Sheet1.Range("A2:A" & Sheet1.[A65536].End(xlUp).Row) If Cells(i, 2).Value = c Then Cells(i, 2).Font.ColorIndex = 3 Next c If Cells(i, ...

经验教程

952

收藏

83
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部