Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access朗读任意文本/..
  • Access新增并将内容写..
  • 如何用代碼給一個已經創建的..
  • SQL Server日期计..
  • Access怎样使用Cop..
  • 在不开启文件的情况下打印各..

最新文章

  • 使用Access中创建Ex..
  • Access导入导出Wor..
  • Office2002/Of..
  • 打开一个文件夹,并选中指定..
  • ADO打开带密码的EXCE..
  • Access 获取offi..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > OFFICE集成/导入导出/交互
OFFICE集成/导入导出/交互

对 Microsoft Office 命令栏进行更多编程

●Microsoft Outlook® 如何以编程方式处理命令栏。
●如何向命令栏按钮中添加自定义图像。
●如何向命令栏中添加组合框。
●如何禁用和隐藏命令栏以及命令栏控件。
●如何定位命令栏。
●如何动态添加和删除命令栏。
●如何在给定的 Office 应用程序中列出命令栏和命令栏控件的通用属性。

命令栏和 Outlook 对象模型
在上个月的专栏中,我忘了告诉您 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

在前面的代码示例中,将代码 ActiveExplorer 替换为 ActiveInspector 可打印活动检查器的所有命令栏名称。对于那些不熟悉 Outlook 对象模型的用户,“浏览器”表示 Outlook 用户界面。“检查器”表示一个窗口,它包含特定的 Outlook 项(如电子邮件信息或联系人)以及 Outlook 项中的任何选项卡页(如任务项中的“详细信息”选项卡)。

向命令栏按钮中添加自定义图像
尽管可以使用 CommandBarButton 对象的 FaceId 属性将命令栏按钮的图像设置为 Office 提供的内置图像,但您可以使用 CommandBarButton 对象的 Picture 属性提供您创建的图像,也可以使用 CommandBarButton 对象的 Mask 属性创建自定义透明图像。

尽管在 Web 的共享软件和免费软件站点上有很多可用的图像编辑器,以及 Microsoft Visual C++® 这样的工具,但是要创建这些图像,使用 Microsoft 画图就足够了。要使用画图创建这些图像:

在“开始”菜单上,指向“程序”,指向“附件”,然后单击“画图”。
在“图像”菜单上,单击“属性”。
在“宽度”框中,键入“16”。在“高度”框中,键入“16”。确保选中“像素”和“彩色”选项,然后单击“确定”。
在“查看”菜单上,指向“缩放”,然后单击“自定义”。
单击“800%”选项,然后单击“确定”。
在“查看”菜单上,指向“缩放”,然后单击“显示网格”。
在“查看”菜单上,确保选中“工具箱”和“颜料盒”命令。
使用“工具箱”和“颜料盒”控件创建图像。
创建完图像之后,在“文件”菜单上,单击“保存”。
将图标保存为“256 色位图”。
下面是我创建的图像示例:

点击打开新窗口

图 1:自定义的不透明位图

要创建透明图像,您必须创建相应的“图像掩码”。为此,请保存刚刚创建的图像,但要更改文件名。对于每个需要透明的像素,请用白色填充该像素。对于每个需要不透明的像素,请用黑色填充该像素。然后再次保存该图像。下面是我创建的图像掩码示例:

点击打开新窗口

图 2:自定义位图掩码

下面是一些示例代码,显示如何向命令栏按钮中添加透明图片:

Public Sub NewPictureOnNewCommandBar()

用途:向命令栏按钮中添加图片。

Dim objCommandBar As Office.CommandBar
Dim objCommandBarButton As Office.CommandBarButton
Dim objPicture As stdole.IPictureDisp

如果不需要透明图像,请将下一行代码注释掉。
Dim objMask As stdole.IPictureDisp

Const PICTURE_PATH As String = "C:\My Pictures\OK.bmp"

如果不需要透明图像,请将下一行代码注释掉。
Const PICTURE_MASK As String = "C:\My Pictures\OKMask.bmp"

Const COMMAND_BAR_NAME As String = "测试命令栏"

将下一行替换为:
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- 对于 Outlook
For Each objCommandBar In Application.VBE.CommandBars <- 对于 Visual Basic Editor
For Each objCommandBar In Application.CommandBars

If objCommandBar.Name = COMMAND_BAR_NAME Then

objCommandBar.Delete

End If

Next objCommandBar

Set objCommandBar = Application.CommandBars.Add(COMMAND_BAR_NAME)
Set objCommandBarButton = _
objCommandBar.Controls.Add(msoControlButton)
Set objPicture = LoadPicture(PICTURE_PATH)

如果不需要透明图像,请将下一行代码注释掉。
Set objMask = LoadPicture(PICTURE_MASK)

objCommandBarButton.Picture = objPicture

如果不需要透明图像,请将下一行代码注释掉。
objCommandBarButton.Mask = objMask

End Sub

如前面的代码所示,请在代码中为不透明图像创建一个对象,为图像掩码创建一个对象;每个对象都必须为 stdole.IPictureDisp 类型。接下来,通过调用对象的 LoadPicture 方法对这两个对象分别进行初始化。最后,将命令栏按钮对象的 Picture 属性设置为不透明图像对象,将命令栏按钮对象的 Mask 属性设置为图像掩码。

以下是不透明和透明图像的最终外观:

点击打开新窗口
点击打开新窗口

图 3:命令栏按钮上的不透明和透明图像

顺便说一下,请勿将 CommandBarButton 对象的 FaceId 属性与 CommandBarButton 对象的 Id 属性混淆在一起。Id 属性确定该命令栏控件的内置操作。所有自定义命令栏控件 Id 属性的默认值均为 1。将自定义命令栏控件的 Id 属性设置为 1 以外的数字会将自定义命令栏控件的操作设置为内置操作(前提是应用程序中存在此 ID 的内置操作)。为了便于参考,下列代码列出了应用程序中所有命令栏控件的所有 ID:

Public Sub ListCommandBarControlIDs()

用途:列出当前应用程序所有命令栏控件的 ID。

Dim objCommandBar As Office.CommandBar
Dim objCommandBarControl As Office.CommandBarControl

将下一行替换为:
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- 对于 Outlook
For Each objCommandBar In Application.VBE.CommandBars <- 对于 Visual Basic Editor
For Each objCommandBar In Application.CommandBars

For Each objCommandBarControl In objCommandBar.Controls

Debug.Print objCommandBarControl.Caption & " " & _
objCommandBarControl.ID

Next objCommandBarControl

Next objCommandBar

End Sub

向命令栏中添加组合框
要向命令栏中添加组合框,请使用 CommandBarControls 集合的 Add 方法,并将 msoControlComboBox 枚举常数传递给 Type 参数。然后使用 CommandBarComboBox 对象的 AddItem 方法向组合框中添加选项。

以下函数向现有命令栏中添加组合框:

Public Function AddComboBoxToCommandBar(ByVal strCommandBarName As String, _
ByVal strComboBoxCaption As String, _
ByRef strChoices() As String) As Boolean

用途:向命令栏中添加组合框。
接受:
strCommandBarName:添加组合框的命令栏名称。
strChoices():组合框选项数组。
返回:如果组合框已成功添加至命令栏中,则为 True。

Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarComboBox As Office.CommandBarComboBox
Dim varChoice As Variant

On Error GoTo AddComboBoxToCommandBar_Err

删除以前添加的此组合框的所有实例。
将下一行代码替换为:
For Each objCommandBarControl In _
Application.ActiveExplorer.CommandBars.Item(strCommandBarName).Controls _
<- 对于 Outlook
For Each objCommandBarControl In _
Application.VBE.CommandBars.Item(strCommandBarName).Controls _
<- 对于 Visual Basic Editor
For Each objCommandBarControl In Application.CommandBars.Item(strCommandBarName).Controls

If objCommandBarControl.Caption = strComboBoxCaption Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

创建组合框。
将下一行代码替换为:
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox) _
<- 对于 Outlook
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox) _
<- 对于 Visual Basic Editor
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox)

objCommandBarComboBox.Caption = strComboBoxCaption

For Each varChoice In strChoices

objCommandBarComboBox.AddItem varChoice

Next varChoice

AddComboBoxToCommandBar_End:

AddComboBoxToCommandBar = True
Exit Function

AddComboBoxToCommandBar_Err:

AddComboBoxToCommandBar = False

End Function

可以使用如下所示的代码测试该函数:

Public Sub TestAddComboBoxToCommandBar()

用途:测试 AddComboBoxToCommandBar 函数。

Dim strChoices(4) As String

strChoices(1) = "Vanilla"
strChoices(2) = "Chocolate"
strChoices(3) = "Strawberry"
strChoices(4) = "Other"

If AddComboBoxToCommandBar("Tools", "Favorite Ice Cream", _
strChoices) = True Then

MsgBox "组合框已成功添加。"

Else

MsgBox "未能添加组合框。"

End If

End Sub

禁用和隐藏命令栏与命令栏控件
开发 Office 解决方案时,您可能需要防止用户在与该解决方案关联的某些命令栏和命令栏控件上单击。例如,您可能需要防止用户单击“窗体”工具栏上的任何控件,以免修改您在 Microsoft Word 中创建的自定义窗体。您也可能需要为给定的解决方案禁用“工具”菜单上的“宏”命令。

将命令栏或命令栏控件的 Enabled 属性设置为 False 可禁用命令栏或命令栏控件;同样,将命令栏或命令栏控件的 Enabled 属性设置为 True 可启用命令栏或命令栏控件。

将命令栏或命令栏控件的 Visible 属性设置为 False 可隐藏命令栏或命令栏控件;同样,将命令栏或命令栏控件的 Visible 属性设置为 True 可显示命令栏或命令栏控件。

要尝试此操作,请将以下代码行输入到“立即”窗口。每个代码行将切换指定的命令栏或命令栏控件的启用或可见状态。如果在 Outlook 或 Microsoft Visual Basic® Editor 中输入此代码,请务必使用 Application.ActiveExplorer 或 Application.VBE 术语。要返回到开始时的启用或可见状态,请确保将每行运行两次。

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 工作簿中:

点击打开新窗口

图 4:在 Excel 中动态创建命令栏的信息

在 Visual Basic Editor 中,将以下代码添加到与新空白工作簿关联的新代码模块中:

Public Function CreateCommandBarPopup() As Boolean

用途:根据 Excel 工作表中提供的信息,
创建一个包含菜单项的命令栏弹出控件。

返回:如果命令栏弹出控件
成功添加,则为 True。

Dim objWorksheet As Excel.Worksheet
Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarPopup As Office.CommandBarPopup
Dim objCommandBarButton As Office.CommandBarButton
Dim intRow As Integer

On Error GoTo CreateCommandBarPopup_Err

必须将包含命令栏信息的工作表
命名为“CommandBarInfo”。
Set objWorksheet = ThisWorkbook.Sheets("CommandBarInfo")

从以前的版本中删除该控件的
所有现有实例。
For Each objCommandBarControl In Application.CommandBars.Item("Standard").Controls

If objCommandBarControl.Caption = objWorksheet.Cells(1, 1) Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

Set objCommandBarPopup = _
Application.CommandBars.Item("Standard").Controls.Add(msoControlPopup)

objCommandBarPopup.Caption = objWorksheet.Cells(1, 1)

intRow = 3

一直添加按钮,直到标题用尽为止。
Do Until objWorksheet.Cells(intRow, 1) = ""

With objCommandBarPopup

Set objCommandBarButton = .Controls.Add(msoControlButton)

With objCommandBarButton

.Caption = objWorksheet.Cells(intRow, 1)
.OnAction = objWorksheet.Cells(intRow, 2)

End With

End With

intRow = intRow + 1

Loop

CreateCommandBarPopup_End:

CreateCommandBarPopup = True
Exit Function

CreateCommandBarPopup_Err:

CreateCommandBarPopup = False

End Function

Public Function DeleteCommandBarPopup() As Boolean

用途:根据 Excel 工作表中提供的信息,
删除命令栏弹出控件。

返回:如果命令栏弹出控件被
成功删除,则为 True。

Dim objWorksheet As Excel.Worksheet
Dim objCommandBarControl As Office.CommandBarControl

On Error GoTo DeleteCommandBarPopup_Err

必须将包含命令栏信息的工作表
命名为“CommandBarInfo”。
Set objWorksheet = ThisWorkbook.Sheets("CommandBarInfo")

删除该控件的所有现有实例。
For Each objCommandBarControl In Application.CommandBars.Item("Standard").Controls

If objCommandBarControl.Caption = objWorksheet.Cells(1, 1) Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

DeleteCommandBarPopup_End:

DeleteCommandBarPopup = True
Exit Function

DeleteCommandBarPopup_Err:

DeleteCommandBarPopup = False

End Function

Public Sub TestMacro()

用途:提供一个完整性测试宏。

MsgBox "这是测试宏。"

End Sub

将以下代码添加到新空白工作簿的 ThisWorkbook 模块中:

Private Sub Workbook_Open()

If CreateCommandBarPopup = False Then

MsgBox "未能正确添加弹出菜单。"

Else

MsgBox "弹出菜单已成功添加。"

End If

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If DeleteCommandBarPopup = False Then

MsgBox "未能正确删除弹出菜单。"

Else

MsgBox "弹出菜单已成功删除。"

End If

End Sub

保存并关闭工作簿,然后重新打开该工作簿。请注意,“家务”弹出菜单已添加到“标准”工具栏中。还应注意,在关闭此工作簿时,“家务”弹出菜单将消失。

有关该技术的更详细版本,请参阅 Excel 资深专家 (MVP) John Walkenbach 提供的解决方案,网址为 http://j-walk.com/ss/excel/tips/tip53.htm(英文)。

CommandBarDocumenter 和 CommandBarControlDocumenter 子例程
在开发命令栏解决方案时,我经常需要获取特定命令栏或命令栏控件的索引、名称或标题。我创建了 CommandBarDocumenter 和 CommandBarControlDocumenter 子例程,以便将所有命令栏和命令栏控件的公共属性记录在给定的 Office 应用程序中。

要运行这些示例,请在 Visual Basic Editor 中将以下代码复制到 Microsoft Office XP 应用程序的代码模块,然后运行以下子例程之一或两者都运行。屏幕出现提示时,请将结果保存为文本文件 (.txt)。这使结果更容易加载到应用程序(例如 Microsoft Excel)中以便查看和过滤。

Public 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 & _
"Position" & 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 <- 对于 _
Visual Basic Editor
For Each objCommandBar In Application.CommandBars

Select Case objCommandBar.Type
Case msoBarTypeMenuBar
strType = "Menu Bar"
Case msoBarTypeNormal
strType = "Normal"
Case msoBarTypePopup
strType = "Pop-Up"
End Select

Select Case objCommandBar.Position
Case msoBarBottom
strPosition = "Bottom"
Case msoBarFloating
strPosition = "Floating"
Case msoBarLeft
strPosition = "Left"
Case msoBarMenuBar
strPosition = "Menu Bar"
Case msoBarPopup
strPosition = "Pop-Up"
Case msoBarRight
strPosition = "Right"
Case msoBarTop
strPosition = "Top"
End Select

Select Case objCommandBar.Protection
Case msoBarNoChangeDock
strProtection = "No Change Dock"
Case msoBarNoChangeVisible
strProtection = "No Change Visible"
Case msoBarNoCustomize
strProtection = "No Customize"
Case msoBarNoHorizontalDock
strProtection = "No Horizontal Dock"
Case msoBarNoMove
strProtection = "No Move"
Case msoBarNoProtection
strProtection = "No Protection"
Case msoBarNoResize
strProtection = "No Resize"
Case msoBarNoVerticalDock
strProtection = "No Vertical Dock"
End Select

objTextStream.WriteLine objCommandBar.Name & vbTab & _
strType & vbTab & _
objCommandBar.Enabled & vbTab & _
objCommandBar.Visible & vbTab & _
objCommandBar.Index & vbTab & _
strPosition & vbTab & _
strProtection & vbTab & _
objCommandBar.RowIndex & vbTab & _
objCommandBar.Top & vbTab & _
objCommandBar.Height & vbTab & _
objCommandBar.Left & vbTab & _
objCommandBar.Width

Next objCommandBar

objTextStream.Close

MsgBox "结果写入 " & objFileSaveDialog.SelectedItems.Item(1) & "."

End If

End Sub

Sub CommandBarControlDocumenter()

用途:将当前应用程序中所有有关命令栏的信息
写入文本文件。

您必须先设置对 Microsoft 脚本运行时的引用
才能使此代码正确运行。

注意:此代码仅适用于 Microsoft Office XP。

Dim objCommandBar As Office.CommandBar
Dim objCommandBarControl As Office.CommandBarControl
Dim strOLEUsage As String
Dim strType 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 "ID" & vbTab & _
"Index" & vbTab & _
"Caption" & vbTab & _
"Parent" & vbTab & _
"DescriptionText" & vbTab & _
"BuiltIn" & vbTab & _
"Enabled" & vbTab & _
"IsPriorityDropped" & vbTab & _
"OLEUsage" & vbTab & _
"Priority" & vbTab & _
"Tag" & vbTab & _
"TooltipText" & vbTab & _
"Type" & vbTab & _
"Visible" & vbTab & _
"Height" & vbTab & _
"Width"

将下一行替换为:
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- 对于 Outlook
For Each objCommandBar In Application.VBE.CommandBars _
<- 对于 Visual Basic Editor
For Each objCommandBar In Application.CommandBars

For Each objCommandBarControl In objCommandBar.Controls

Select Case objCommandBarControl.OLEUsage

Case msoControlOLEUsageBoth
strOLEUsage = "Both"
Case msoControlOLEUsageClient
strOLEUsage = "Client"
Case msoControlOLEUsageNeither
strOLEUsage = "Neither"
Case msoControlOLEUsageServer
strOLEUsage = "Server"

End Select

Select Case objCommandBarControl.Type

Case msoControlActiveX
strType = "ActiveX"
Case msoControlAutoCompleteCombo
strType = "Auto-Complete Combo Box"
Case msoControlButton
strType = "Button"
Case msoControlButtonDropdown
strType = "Drop-Down Button"
Case msoControlButtonPopup
strType = "Popup Button"
Case msoControlComboBox
strType = "Combo Box"
Case msoControlCustom
strType = "Custom"
Case msoControlDropdown
strType = "Drop-Down"
Case msoControlEdit
strType = "Edit"
Case msoControlExpandingGrid
strType = "Expanding Grid"
Case msoControlGauge
strType = "Gauge"
Case msoControlGenericDropdown
strType = "Generic Drop-Down"
Case msoControlGraphicCombo
strType = "Graphic Combo Box"
Case msoControlGraphicDropdown
strType = "Graphic Drop-Down"
Case msoControlGraphicPopup
strType = "Popup Graphic"
Case msoControlGrid
strType = "Grid"
Case msoControlLabel
strType = "Label"
Case msoControlLabelEx
strType = "LabelEx"
Case msoControlOCXDropdown
strType = "OCX Drop-Down"
Case msoControlPane
strType = "Pane"
Case msoControlPopup
strType = "Popup"
Case msoControlSpinner
strType = "Spinner"
Case msoControlSplitButtonMRUPopup
strType = "Split Button MRU Popup"
Case msoControlSplitButtonPopup
strType = "Button Popup"
Case msoControlSplitDropdown
strType = "Split Drop-Down"
Case msoControlSplitExpandingGrid
strType = "Split Expanding Grid"
Case msoControlWorkPane
strType = "Work Pane"

End Select

objTextStream.WriteLine objCommandBarControl.ID & _
vbTab & _
objCommandBarControl.Index & vbTab & _
objCommandBarControl.Caption & vbTab & _
objCommandBarControl.Parent.Name & vbTab & _
objCommandBarControl.DescriptionText & vbTab & _
objCommandBarControl.BuiltIn & vbTab & _
objCommandBarControl.Enabled & vbTab & _
objCommandBarControl.IsPriorityDropped & vbTab & _
strOLEUsage & vbTab & _
objCommandBarControl.Priority & vbTab & _
objCommandBarControl.Tag & vbTab & _
objCommandBarControl.TooltipText & vbTab & _
strType & vbTab & _
objCommandBarControl.Visible & vbTab & _
objCommandBarControl.Height & vbTab & _
objCommandBarControl.Width

Next objCommandBarControl

Next objCommandBar

objTextStream.Close

MsgBox "结果写入 " & _
objFileSaveDialog.SelectedItems.Item(1) & "."

End If

End Sub

发布人:共享  
分享到:
点击次数:  更新时间:2005-08-16 10:50:28  【打印此页】  【关闭】
上一条:初识VBA:第七课 使鼠标指向按钮时变成手形  下一条:表达式生成器中的几种常用符号



相关文章

  • • 使用Access中创建Excel对象自动化出错的解决办法集锦
  • • Access导入导出Word 题库
  • • Office2002/Office2003/Office2007/Office2010的详细版本号大全
  • • 打开一个文件夹,并选中指定文件
  • • ADO打开带密码的EXCEL文件的函数
  • • Access 获取office的安装路径【函数】
  • • 导入导出Excel(.Xlsx)或(.Xls)数据到SQL Server
  • • 浅析Access与Office其他成员之间交流数据

热门文章

  • [2005-02-04] Access导出到Excel提速之法access数据库
  • [2004-11-19] Access将窗体内容导出到Excel并对其进行格式化access数据库
  • [2005-02-04] Access朗读任意文本/使Access真人发声access数据库
  • [2016-08-23] 打开一个文件夹,并选中指定文件access数据库
  • [2005-04-30] XLS与MDB文件格式互换全攻略access数据库
  • [2005-08-16] SQL Server日期计算access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn