标题: [分享][转帖]对 Microsoft Office 命令栏进行更多编程 [打印本页] 作者: andymark 时间: 2006-5-11 06:18 标题: [分享][转帖]对 Microsoft Office 命令栏进行更多编程 对 Microsoft Office 命令栏进行更多编程<FONT>
Frank C. Rice
Microsoft Corporation
Paul Cornell
Microsoft Corporation
2002 年 5 月 2 日
在上个月的专栏中,我忘了告诉您 Microsoft Outlook 对象模型访问命令栏和命令栏控件的方式与其他 Microsoft Office 应用程序略有不同。
在除 Outlook 以外的应用程序中,您可以使用如下所示的代码访问命令栏:Public Sub ListCommandBarNames()
' 用途:列出当前应用程序的所有命令栏名称。
' 注意:此代码对 Outlook 无效!
Dim objCommandBar As Office.CommandBar
For Each objCommandBar In Application.CommandBars
Debug.Print objCommandBar.Name
Next objCommandBar
End Sub
然而,尝试在 Outlook 中运行此代码将导致运行时错误。相反,您必须使用 Explorer 或 Inspector 对象的 CommandBars 属性,如下所示:Public Sub ListOutlookExplorerCommandBarNames()
' 用途:列出当前资源管理器的所有命令栏名称。
' 注意:此代码只对 Outlook 有效!
Dim objCommandBar As Office.CommandBar
For Each objCommandBar In Application.ActiveExplorer.CommandBars
Debug.Print objCommandBar.Name
Next objCommandBar
End Sub
在前面的代码示例中,将代码 <CODE class=ce>ActiveExplorer</CODE> 替换为 <CODE class=ce>ActiveInspector</CODE> 可打印活动检查器的所有命令栏名称。对于那些不熟悉 Outlook 对象模型的用户,“浏览器”表示 Outlook 用户界面。“检查器”表示一个窗口,它包含特定的 Outlook 项(如电子邮件信息或联系人)以及 Outlook 项中的任何选项卡页(如任务项中的“详细信息”选项卡)。
要运行这些示例,请在 Visual Basic Editor 中将以下代码复制到 Microsoft Office XP 应用程序的代码模块,然后运行以下子例程之一或两者都运行。屏幕出现提示时,请将结果保存为文本文件 (.txt)。这使结果更容易加载到应用程序(例如 Microsoft Excel)中以便查看和过滤。<RE>ublic Sub CommandBarDocumenter()
' 用途:将当前应用程序中有关所有命令栏的信息
' 写入文本文件。
' 您必须先设置对 Microsoft 脚本运行时的引用
' (scrrun.dll) 才能使此代码正确运行。
' 注意:此代码仅适用于 Microsoft Office XP。
Dim objCommandBar As Office.CommandBar
Dim strType As String
Dim strPosition As String
Dim objFileSaveDialog As Office.FileDialog
Dim objFSO As Scripting.FileSystemObject
Dim objTextStream As Scripting.TextStream
Const SAVE_BUTTON As Integer = -1
Set objFileSaveDialog = Application.FileDialog(msoFileDialogSaveAs)
objFileSaveDialog.Title = "将结果另存为"
' 用户单击“保存”按钮。
If objFileSaveDialog.Show = SAVE_BUTTON Then
Set objFSO = New Scripting.FileSystemObject
Set objTextStream = objFSO.CreateTextFile(objFileSaveDialog.SelectedItems.Item(1))
objTextStream.WriteLine "Name" & vbTab & _
"Type" & vbTab & _
"Enabled" & vbTab & _
"Visible" & vbTab & _
"Index" & vbTab & _
"osition" & vbTab & _
"Protection" & vbTab & _
"Row Index" & vbTab & _
"Top" & vbTab & _
"Height" & vbTab & _
"Left" & vbTab & _
"Width"
' 将下一行替换为:
' For Each objCommandBar In Application.ActiveExplorer.CommandBars _
<- 对于 Outlook
' For Each objCommandBar In Application.VBE.CommandBars <- 对于 _