在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
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命令的一個例子(該例子放在自定義模板中)
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
如果快速得到WORD中對應命令的命令名稱,有多種方法,一是使宏對話框中的WORD命令,我們可以知道所有WORD命令,還可以使用宏對話框中的”ListCommands”命令,將所有WORD命令自動列表;還可以使用自定義/命令/所有命令中獲得;也可以通過插入域/MacroButton域中的宏名列表中獲得;最方便的是使用CTRL+ALT+數字小鍵盤上的”+”號,當光標變成”中國結”時,點向所需按鈕命令,即出現一個自定義對話框,在這個對話框中所顯示的命令,就是你要的命令名稱。