当前位置:七道奇文章资讯数据防范Access防范
日期:2011-05-01 23:30:00  来源:本站整理

为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防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 为Access2007成立一个利用程序级的自定义Ribbon——Office2007
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .