一.建立功能区
一、XML
首先,要确定功能区要包含的内容,本文假设,要建立如下图所示的功能区。
其中:
打开罗斯文商贸(Access 2007 示例数据库中的 Home 窗体)
压缩和修复数据库(Access 2007 系统功能)
关闭数据库(调用回调函数,实现关闭当前数据库)
并且在数据库打开时就加载这个功能区。
为了实现上述功能,需要建立如下的 XML 内容:
customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui"onLoad="onLoadRibbon"ribbonstartFromScratch="true"fileMenubuttonidMso="OpenDatabase"visible="false"/buttonidMso="CloseDatabase"visible="false"/buttonidMso="NewDatabase"visible="false"/buttonidMso="SaveAs"visible="false"/splitButtonidMso="AccessSaveAsMenu"visible="false"//fileMenutabstabid="tabMain"label="Ribbon测试程序"groupid="grpHome"label="Home"buttonid="cmdHome"label="打开罗斯文商贸"imageMso="MeetingsWorkspace"size="large"onAction="onOpenFormEdit"tag="Home"/buttonidMso="CompactDatabase"size="large"/buttonid="cmdClose"label="关闭数据库"imageMso="CloseDatabase"size="large"onAction="onCloseDatabase"//group/tab/tabs/ribbon/customUI
在第一行指明自定义功能区的架构为 http://schemas.microsoft.com/office/2006/01/customui。
第二行的“startFromScrath="true"”表示关闭原来的功能区。
fileMenu节点描述 Access 文件菜单。
tabs节点描述自定义功能区的分组和分组中的按钮等。
二、编写 XML
可以使用任意的本文编辑器来编写 XML,但是使用 Visual Studio 2005 或者 Visual Web Developer 2005 速成版这样的工具来得更为方便快捷,并且在指定 customUI功能区架构后,能够方便使用智能提示功能方便快捷的书写功能区XML,下面以 Visual Studio 2005 为例来说明如何编写功能区XML。
首先,从http://officeblogs.net/UI/customUI.xsd 下载 customUI 的架构文件。然后打开 Visual Studio 2005,然后文件菜单上点击[新建文件],选择[XML 文件],点击[打开],如下图:
然后,删除文件中的“?xml version="1.0" encoding="utf-8"?” 。
打开 XML 文档属性,选择[架构]如下图:
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)在 XSD 架构对话框中,添加上面下载回来的 customUI.xsd。
这样就能使用智能提示功能,快速地编写功能区XML。
二.编写回调函数
回调函数的目的是完成功能区上控件所执行的功能。在上一篇文章中的 XML 内容中,第一行:
customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui"onLoad="onLoadRibbon"
onLoad 属性值为 onLoadRibbon,即表示在加载功能区时调用 onLoadRibbon 函数,这个函数要用 VBA 来进行书写。
一、建立 Access 应用程序
新建一个数据库,命名为功能区.accdb,导入 Northwind2007.accdb 数据库中所有对象(示例中要用一些对象)。按 Alt+F11 键进入 VBE。为了使用功能区对象,首先必须引用 Microsoft Office 12.0 Object Library。
二、建立模块
为了统一管理,将所有回调函数放在同一个模块中,在 VBE 中新建一个模块,命名为 basRibbonCallbacks。为了以后能方便地使用自定义的功能区对象,定义一个全局对象变量 gobjRibbon,并 onLoad 指定的回调函数 onLoadRibbon 中进行赋值。
OptionCompareDatabase
OptionExplicit
'------------------------------
本模块包含Ribbon回调子程序'------------------------------
PublicgobjRibbonAsIRibbonUI
'自定义Ribbon加载时事件处理PublicSubonLoadRibbon(RibbonAsIRibbonUI) '将自定义Ribbon对象设置为全局对象 SetgobjRibbon=RibbonEndSub
实现功能区中的“打开罗斯文商贸”控件的onOpenFormEdit 回调函数,通过功能区中的 Tag 属性实现传递要打开的窗体名,在本例中,button id="cmdHome" label="打开罗斯文商贸" imageMso="MeetingsWorkspace" size="large" onAction="onOpenFormEdit" tag="Home"/,cmdHome 按钮控件的 Tag 属性为“Home”,指定要打开的窗体为“Home”。
'通过Ribbon中的Tag属性实现传递要打开的窗体PublicSubonOpenFormEdit(controlAsIRibbonControl) '以编辑方式打开窗体 DoCmd.OpenFormcontrol.Tag,,,,acFormEditEndSub
实现功能区中的“关闭数据库”的onCloseDatabase 回调函数。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)PublicSubonCloseDatabase(controlAsIRibbonControl) DoCmd.CloseDatabaseEndSub
创建功能区系统数据表
讲述了如何创建功能区XML,那么这个 XML 如何使用呢?