o; 如果从AutoExec宏中调用这段代码, ‘ 如果在USysRibbons表中有一个使用相同名称的定制 ‘ 则会失败 Application.LoadCustomUI “FormNames”, xml End Function当运行该段代码时,如果应用程序中包含有名为Form1和Form2的两个窗体,则会创建像下面的XML的标记。 <customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“> <ribbon startFromScratch=”false”> <tabs> <tab id=”DemoTab” label=”LoadCustomUI Demo”> <group id=”loadFormsGroup” label=”Load Forms”> <button id=”loadForm2Button” label=”Load Form2″ onAction=”HandleOnAction” tag=”Form2″/> <button id=”loadForm1Button” label=”Load Form1″ onAction=”HandleOnAction” tag=”Form1″/> </group> </tab> </tabs> </ribbon> </customUI> 这段标记创建了一个新的LoadCustomUI Demo选项卡,包含有一个“Load Forms”组。在该组内,Ribbon为应用程序中的每个窗体(Form1和Form2)显示一个按钮,并指定每个按钮在单击时应该调用的HandleOnAction回调过程。此外,该标记为每个按钮设置Tag属性,以便于代码应该打开的包含的Access窗体的名称。 6、添加下面的代码到相同的模块中。该过程提供回调行为,打开所选窗体并设置其RibbonName属性到FormNames Ribbon定制。 Public Sub HandleOnAction(control As IRibbonControl) ‘ 装载指定的窗体 ‘ 设置其RibbonName属性以便显示自定义UI. DoCmd.OpenForm control.Tag Forms(control.Tag).RibbonName = “FormNames” End Sub 7、保存该数据库,关闭VBE。 8、如果应用程序只包含一个窗体,则创建窗体使得应用程序至少包含两个窗体。 9、确定应用程序的开启窗体,并且在设计视图中打开该窗体。 10、在属性窗口里的事件选项卡中,找到onLoad事件属性,单击属性值右侧的省略号(…)按钮,选择选项列表中的“代码生成器”,然后单击“确定”。(如果没有看到属性窗口,在设计选项卡中单击“属性表”。) 11、在VBE中,修改Form_Load过程,其代码如下所示。 Private Sub Form_Load() CreateFormButtons Me.RibbonName = “FormNames” End Sub 12、在菜单“工具”中,单击“引用”,选择“Microsoft Office 12.0 Object Library”(需要对该对象库的引用来使用IRibbonControl类),然后单击“确定”。 13、保存该数据库,关闭VBE。 14、单击“Office按钮”,然后单击“Access选项”。 15、单击“当前数据库”选项卡。 16、在应用程序选项部分,从窗体的显示窗体列表中选择启动窗体,然后单击“确定”。 17、关闭并重新打开该数据库。 启动窗体打开,带有包含显示应用程序里每个窗体的按钮组的自定义选项卡 |