为Access2007成立一个利用程序级的自定义Ribbon——Office2007[Access防范]
本文“为Access2007成立一个利用程序级的自定义Ribbon——Office2007[Access防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
为Access2007成立一个利用程序级的自定义Ribbon
(一) 成立一个 Access2007 利用程序级的自定义Ribbon
1、开启Access2007,翻开一个已存在的数据库或成立一个新数据库.
2、单击“office按钮”,单击“Access选项”,然后单击“高级”选项卡.
3、在“通例”部份,挑选选项“显示加载项用户接口错误”(在差别的利用程序中,该选项大概在差别的位置).
4、单击“肯定”关闭Access选项对话框.
接下来,成立一个包含自定义XML标志的表.
5、在Access2007中,右键单击导航窗格,单击“导航选项”,选中“显示系统对象”前的复选框.(除非设置了该选项,不然将不大概在导航窗格中查看USysRibbons表.)单击“肯定”按钮,Access系统表将呈目前导航窗格中.
6、在“成立”选项卡中,单击“表计划”.
7、在表中增添下面的字段.
表:在USysRibbons表中定义的字段
字段名称 数据范例
ID 自动编号
RibbonName 文本
RibbonXml 备注
8、挑选ID字段,在“计划”选项卡中挑选“主键”.
9、单击“Office按钮”,然后单击“保存”,将新表命名为USysRibbons.
10、右键单击USysRibbons选项卡,然后单击“数据表视图”.
11、增添下面的数据到所成立的字段中.
表:USysRibbons表数据
字段名称 值
ID (自动编号)
RibbonName HideData
RibbonXml Xml
<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>
<ribbon startFromScratch=”false”>
<tabs>
<tab idMso=”TabCreate” visible=”false” />
<tab id=”dbCustomTab” label=”A Custom Tab” visible=”true”>
<group id=”dbCustomGroup” label=”A Custom Group”>
<control idMso=”Paste” label=”Built-in Paste” enabled=”true”/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
这段标志设置startfromScratch属性为False,然后躲藏内置的“成立”选项卡.接着,成立一个自定义选项卡和自定义组,并将内置的粘贴控件增添到组中.
12、关闭该表.
13、关闭并重新翻开数据库.
14、单击“Office 按钮”,然后单击“Access选项”.
15、单击“当前数据库”选项卡,向下转动到“功效区和工具栏选项”部份.
16、在“功效区名称”下拉列表中,挑选“HideData”,单击“肯定”按钮.
17、关闭并重新翻开该数据库.
此时,“成立”选项卡已不在功效区中,Fluent UI包含了“A Custom Tab”选项卡,此中包含“A Custom Group”组,带有内置的“粘贴”按钮.
18、要恢复功效区,则需求翻开“Access选项”对话框,删除“功效区名称”选项中的内容,然后关闭并重新翻开数据库,此时Access2007将显示其缺省的Fluent UI.
注意:也可以从USysRibbons表中利用一个功效区,为指定的窗体或报表供应UI.要举行这样的操作,在计划或筹划情势下翻开窗体或报表,然后设置窗体的RibbonName属性为想要利用的Ribbon的名称.在设置该属性之前,必须挑选窗体自身,而不是窗体中的任何控件或挑选.
(二) 在运行时装载定制
假如想在运行时装载静态的定制,则将这些定制存储在USysRibbons表中,并且在需求时设置窗体或报表的RibbonName属性.但是,假如需求成立动态的定制,则调用Application.LoadCustomUI办法.下面的示例成立一个Ribbon定制,显示利用程序中每个窗体的按钮,处理每个按钮的onAction回调来装载恳求的窗体.
成立动态的Ribbon定制
1、将前面内容中所利用的数据库装载到Access 2007中.假如数据库中只有一个窗体,则成立一个新窗体并在每个窗体中增添一至两个控件.
2、在“成立”选项卡中的“其他”组中,单击“宏”按钮的下拉列表,然后单击“模块”.
3、在VBE中的菜单“视图”中,单击“属性窗口”.
4、在“属性”窗口中,将名称(Name)属性框中模块的名称改成RibbonLoader.
5、在代码窗口中,输入下面的代码.固然该办法不会返回值,但必须是一个函数,不然不可以从Access宏中调用.
Function CreateFormButtons()
Dim xml As String
xml = _
“<customUI xmlns=”" http://schemas.microsoft.com/ ” & _
“office/2006/01/customui”">” & vbCrLf & _
“ <ribbon startFromScratch=”"false”">” & vbCrLf & _
“ <tabs>” & vbCrLf & _
“ <tab id=”"DemoTab”" label=”"LoadCustomUI Demo”">” & _
vbCrLf & _
“ <group id=”"loadFormsGroup”" label=”"Load Forms”">” & _
vbCrLf & _
“{0}” & vbCrLf & _
“ </group>” & vbCrLf & _
“ </tab>” & vbCrLf & _
“ </tabs>” & vbCrLf & _
“ </ribbon>” & vbCrLf & _
“</customUI>”
Dim template As String
template = “<button id=”"load{0}Button”" ” & _
“label=”"Load {0}”" onAction=”"HandleOnAction”" ” & _
“tag=”"{0}”"/>” & vbCrLf
Dim formContent As String
Dim frm As AccessObject
For Each frm In CurrentProject.AllForms
formContent = formContent & _
Replace(template, “{0}”, frm.Name)
Next frm
xml = Replace(xml, “{0}”, formContent)
Debug.Print xml
On Error Resume Next
‘ 假如从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、关闭并重新翻开该数据库.
启动窗体翻开,带有包含显示利用程序里每个窗体的按钮组的自定义选项卡.单击任何一个按钮,Access翻开呼应的窗体,保持相同的自定义UI.
除了已介绍的技术外,可以通过利用COM加载项增添 Ribbon定制 到Access2007中.COM加载项供应增添自定义RibbonX功效作为组件包的好处,而不需求在每个利用程序中增添VBA代码.在 Access2007 中履行加载项就像在别的Office利用程序中一样.
注意:固然可以利用Visual Studio 2005同享加载项模板为Access成立一个COM加载项,但不可以利用 Visual Studio 2005 Tools for Office Second Edition来为Access成立COM加载项.Access是Visual Studio 2005 Tools for Office Second Edition不支持的利用程序之一.
以上是“为Access2007成立一个利用程序级的自定义Ribbon——Office2007[Access防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |