编程改变Word的菜单栏 - 开发心得 - 江边

(这条文章已经被阅读了 82 次) 时间:2001-07-07 01:49:27 来源:江边 (sagartm) 原创-IT

编程改变Word的菜单栏
在 Microsoft Office 97 中,工具栏、菜单栏和快捷菜单都可由同一种类型的对象进行编程控制,这类对象就是命令栏。
我们可以用书写VBA代码通过命令栏对象来改变Word的菜单栏。在给出示例前我们先来了解一下关于命令栏的一些对象,如下图所示:
CommandBars 集合对象
CommandBar 对象的集合,该集合代表容器应用程序中的命令栏。
Add 方法可在集合中添加一个新的命令栏。
用 CommandBars(index)可返回一个 CommandBar 对象。CommandBar 对象代表容器应用程序中的一个命令栏。CommandBar 对象是 CommandBars 集合中的成员。
用BuiltIn 属性判断是否是自定义命令栏。
用Controls 属性返回这样一个 CommandBarControls 对象,该对象代表指定命令栏或弹出式控件中的所有控件。
Enabled 属性如果属性值为 True,那么激活指定的命令栏或命令栏控件。
CommandBarControls 集合对象
CommandBarControl 对象的集合,该集合代表一个命令栏中的命令栏控件。
用 Controls 属性可返回 CommandBarControls 集合。
用 Add 方法可在 CommandBarControls 集合中添加一个新的命令栏控件。
CommandBarButton 对象代表命令栏中的一个按钮控件。
用 Controls(index) 可返回一个 CommandBarButton 对象;
Caption 属性返回或设置指定命令栏控件的标题文字。
FaceId 属性返回或设置一个按钮图符的 ID 号,该按钮图符是当前分配给指定命令栏按钮控件的图符
OnAction 属性
返回或设置这样一个 Visual Basic 的宏名,该宏在用户单击或更改某命令栏控件的值时运行。

有了这些对象的属性、方法,我们就可以开始写程序了
以下示例可实现:在 Tools 菜单底部添加一个新的菜单项。单击该菜单项将运行“MyInfo”显示一条消息。
Sub AddMenu()
‘ AddMenu Macro
Set newItem = CommandBars(“Tools”).Controls.Add(Type:=msoControlButton)
With newItem
.BeginGroup = True
.Caption = “显示消息”
.FaceId = 0
.OnAction = “MyInfo”
End With
End Sub

Private Sub MyInfo()
MsgBox “这是在工具菜单下添加了一个菜单项!”, vbInformation + vbOKOnly, “试验”
End Sub
结果如下图:

以下示例将在主菜单栏上面添加一个菜单条“快捷菜单”,并在“快捷菜单”下显示两条命令
Sub ShortCutMenu()
‘ ShortCutMenu Macro
‘ 宏在 00-2-12 由 Saga 创建
Dim mnuShort As CommandBarControl
Dim mnuShortDrop As CommandBar
Dim mnuShortOne As CommandBarButton
Dim mnuShortTwo As CommandBarButton
Set mnuShort = CommandBars(“Menu Bar”).Controls.Add(Type:=msoControlPopup, Before:=11)
With mnuShort
.Caption = “快捷菜单(&K)”
.BeginGroup = True
.Visible = True
End With
Set mnuShortDrop = mnuShort.Control.CommandBar ‘define 弹出菜单
Set mnuShortOne = mnuShortDrop.Controls.Add(Type:=msoControlButton, Before:=1)
With mnuShortOne
.Caption = “快捷命令1”
.Visible = True
.Style = msoButtonIconAndCaption
.FaceId = 39
.OnAction = “ShortCutCommandOne”
End With
Set mnuShortTwo = mnuShortDrop.Controls.Add(Type:=msoControlButton, Before:=2)
With mnuShortTwo
.Caption = “快捷命令2”
.Visible = True
.Style = msoButtonIconAndCaption
.FaceId = 39
.OnAction = “ShortCutCommandTwo”
End With
End Sub

Private Sub ShortCutCommandOne()
MsgBox “现在执行快捷命令 1 !”, vbInformation + vbOKOnly, “快捷命令”
End Sub

Private Sub ShortCutCommandTwo()
MsgBox “现在执行快捷命令 2 !”, vbInformation + vbOKOnly, “快捷命令”
End Sub

以下的示例是删除在在主菜单栏上面添加的菜单条

Sub DeleteMenut()
Dim i As Integer
For i = 1 To CommandBars(“Menu bar”).Controls.Count
If (CommandBars(“Menu bar”).Controls.Item(i).BuiltIn = False) Then
CommandBars(“Menu bar”).Controls.Item(i).Delete
End If
Next
End Sub

_________________________________________________________________________________
由于不能够贴图很遗憾.