|
2#
楼主 |
发表于 2006-5-11 06:20:00
|
只看该作者
禁用和隐藏命令栏与命令栏控件
开发 Office 解决方案时,您可能需要防止用户在与该解决方案关联的某些命令栏和命令栏控件上单击。例如,您可能需要防止用户单击“窗体”工具栏上的任何控件,以免修改您在 Microsoft Word 中创建的自定义窗体。您也可能需要为给定的解决方案禁用“工具”菜单上的“宏”命令。
将命令栏或命令栏控件的 Enabled 属性设置为 False 可禁用命令栏或命令栏控件;同样,将命令栏或命令栏控件的 Enabled 属性设置为 True 可启用命令栏或命令栏控件。
将命令栏或命令栏控件的 Visible 属性设置为 False 可隐藏命令栏或命令栏控件;同样,将命令栏或命令栏控件的 Visible 属性设置为 True 可显示命令栏或命令栏控件。
要尝试此操作,请将以下代码行输入到“立即”窗口。每个代码行将切换指定的命令栏或命令栏控件的启用或可见状态。如果在 Outlook 或 Microsoft Visual Basic® Editor 中输入此代码,请务必使用 <CODE class=ce>Application.ActiveExplorer</CODE> 或 <CODE class=ce>Application.VBE</CODE> 术语。要返回到开始时的启用或可见状态,请确保将每行运行两次。Application.CommandBars("Tools").Enabled = _
Not Application.CommandBars("Tools").Enabled
Application.CommandBars("Tools").Controls("Macro").Enabled = _
Not Application.CommandBars("Tools").Controls("Macro").Enabled
Application.CommandBars("Tools").controls("Macro").Visible = _
Not Application.CommandBars("Tools").controls("Macro").Visible
定位命令栏
命令栏的 Position 属性指定命令栏在应用程序中的位置。msoBarLeft、msoBarTop、msoBarRight 和 msoBarBottom 枚举常数指定在应用程序的左边、上边、右边或下边显示命令栏。msoBarFloating 枚举常数指定命令栏不靠接到应用程序的边缘。msoBarPopup 枚举常数指定命令栏是弹出菜单。
以下函数更改所指定的命令栏的位置。Public Function ChangeCommandBarPosition(ByVal strCommandBarName As String, _
ByVal msoPosition As MsoBarPosition) As Boolean
' 用途:更改命令栏的位置。
' 接受:
' strCommandBarName:要更改位置的命令栏名称。
' 返回:如果命令栏移动成功,则为 Ture。
On Error GoTo ChangeCommandBarPosition_Err
' 将下一行代码替换为:
' Application.ActiveExplorer.CommandBars.Item(strCommandBarName).Position = _
msoPosition <- 对于 Outlook
' Application.VBE.CommandBars.Item(strCommandBarName).Position = _
msoPosition <- 对于 Visual Basic Editor
Application.CommandBars.Item(strCommandBarName).Position = msoPosition
ChangeCommandBarPosition_End:
ChangeCommandBarPosition = True
Exit Function
ChangeCommandBarPosition_Err:
ChangeCommandBarPosition = False
End Function
可以使用如下所示的代码测试该函数:Public Sub TestChangeCommandBarPosition()
' 用途:测试 ChangeCommandBarPosition 函数。
If ChangeCommandBarPosition("Standard", msoBarFloating) = True Then
MsgBox "命令栏已成功移动。"
Else
MsgBox "未能移动命令栏。某些命令栏无法" & _
"以某些方式移动。"
End If
End Sub
动态添加和删除命令栏
有时需要将命令栏与特定 Office 文档关联在一起。例如,您需要在特定 Office 文档打开时才显示某些自定义命令栏,并在特定 Office 文档关闭时将其隐藏。要以编程方式执行此操作,使用 Excel 就是一个不错的示例。要测试该操作,请创建一个新的空白工作簿,然后将 Sheet1 重命名为 CommandBarInfo。将以下信息键入 CommandBarInfo 工作簿中:
- [img]http://www.microsoft.com/china/msdn/Archives/library/dnofftalk/images/office05022002-fig04.gif[/img]
复制代码
图 4:在 Excel 中动态创建命令栏的信息
在 Visual Basic Editor 中,将以下代码添加到与新空白工作簿关联的新代码模块中:<RE>ublic Function CreateCommandBarPopup() As Boolean
' 用途:根据 Excel 工作表中提供的信息,
' 创建一个包含菜单项的命令栏弹出控件。
' 返回:如果命令栏弹出控件
' 成功添加,则为 True。
Dim objWorksheet As Excel.Worksheet
Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarPopup As Office.CommandBarPop |
|