Office中国论坛/Access中国论坛

标题: 快速制作自己的功能区 [打印本页]

作者: zhuyiwen    时间: 2017-9-14 10:35
标题: 快速制作自己的功能区
[attach]61982[/attach]
下载:


早在以前,我写过 在Access 2010中可以更简单的创建、管理自定义功能区,在那篇文章中介绍的是利用 Access 选项的功能自定义一个功能区,这个功能区是全局的,不管打开那个数据库这个功能区存在。
那么,怎么样快速创建一个只属于当前数据库的专有功能区呢?

其实,很简单。在Access 2007以后版本的数据库中,可以创建一名为 uSysRibbons 的表,在这个表中存储功能区的定义就可以了,这个必须包含两个字段:

[attach]61983[/attach]
一条记录一个功能区。

功能区的结构如下:
  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2.     <ribbon>
  3.         <qat/>
  4.         <tabs>
  5.             <tab id="tabMy" label="我的">
  6.                 <group id="grpFunctions" label="功能" autoScale="true">
  7.                     <button id="btnWelcome" label="欢迎来到 Access 世界" imageMso="HappyFace" size="large" onAction="欢迎" />
  8.                     <button id="btnDesign" label="自定义功能区" imageMso="TableDesign" size="large" onAction="自定义功能区" />
  9.                 </group>
  10.                 <group id="grpDB" label="数据库" imageMso="DatabaseCopyDatabaseFile" autoScale="true">
  11.                     <control idQ="FileCloseDatabase" size="large" />
  12.                 </group>
  13.             </tab>
  14.         </tabs>
  15.     </ribbon>
  16. </customUI>
复制代码

从这段 XML 我们可以看出:


问题是,我们一般都记不住这样的格式,Access 又没有一个设计模板,直接用记事本编写这段 XML 极容易遗漏出错。那么,有没有好点的办法来生成这段 XML 呢?




作者: zhuyiwen    时间: 2017-9-14 10:42
其实办法是有的,就是用 在Access 2010中可以更简单的创建、管理自定义功能区 文章中提到的导出功能。
例如,我在数据库中创建了四个对象:

[attach]61985[/attach]

接下来,我就实现实现自定义的功能区。

首先,点击“文件”选项卡,再点击“选项”,打开“Access选项”对话框,在对话框中选择“自定义功能区”,然后在右侧正角点击“新建选项卡(W)”。
[attach]61986[/attach]

这时,可以在“主选项卡”列表中看到,新增了“新建选项卡(自定义)”和“新建组(自定义)”,然后将这两项重命名。

如图:[attach]61987[/attach]

然后,在左侧“从下列位置选择命令(C)”组合框中选择“宏”,
[attach]61988[/attach]

再在其列表中,将“欢迎”和“自定义功能区”拖到右侧的“功能(自定义)”之下,再在“从下列位置选择命令(C)”组合框中选择“常用命令”,将其列表中的“关闭数据库”拖到右侧的“数据库(自定义)”之下,如图:
[attach]61989[/attach]

这个时候,发现其命令前面的图标,与我们需要显示的图标和文本不符。一般可以通过“重命名(M)...”来更改其图标和显示文本。
[attach]61990[/attach] ==》[attach]61991[/attach]

最后,来完成导出操作。点击右侧的“导入/导出(P)”下拉列表,选择“导出所有自定义设置”
[attach]61992[/attach]

输入导出的文件名“c.exportedUI”。事实上,导出的这个文件是一个XML文本文件,可以用记事本将其打开,将其格式化一下,好看一点。其内容如下:
  1. <mso:cmd app="Access" dt="0" />
  2. <mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
  3.     <mso:ribbon>
  4.         <mso:qat/>
  5.         <mso:tabs>
  6.             <mso:tab id="mso_c1.C382220" label="我的??">
  7.                 <mso:group id="mso_c2.C382220" label="功能??" autoScale="true">
  8.                     <mso:button idQ="x1:欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
  9.                     <mso:button idQ="x1:自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
  10.                 </mso:group>
  11.                 <mso:group id="mso_c3.C4076D4" label="数据库??" autoScale="true">
  12.                     <mso:control idQ="mso:FileCloseDatabase" visible="true"/>
  13.                 </mso:group>
  14.             </mso:tab>
  15.         </mso:tabs>
  16.     </mso:ribbon>
  17. </mso:customUI>
复制代码

看看,是不是和我们前面的定义非常相似?所不同的就是多了许多“mso”。接下来的就是改造它,使之适合我们的需要。
步骤如下:
再看看,是不是更贴近我们的需要?
  1. <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2.     <ribbon>
  3.         <qat/>
  4.         <tabs>
  5.             <tab id="mso_c1.C382220" label="我的">
  6.                 <group id="mso_c2.C382220" label="功能" autoScale="true">
  7.                     <button idQ="欢迎_0_C49EBC5" label="欢迎来到 Access 世界" imageMso="HappyFace" onAction="欢迎" visible="true"/>
  8.                     <button idQ="自定义功能区_1_C49EBC5" label="自定义功能区" imageMso="TableDesign" onAction="自定义功能区" visible="true"/>
  9.                 </group>
  10.                 <group id="mso_c3.C4076D4" label="数据库" autoScale="true">
  11.                     <control idQ="FileCloseDatabase" visible="true"/>
  12.                 </group>
  13.             </tab>
  14.         </tabs>
  15.     </ribbon>
  16. </customUI>
复制代码

事实上,这段 XML 已经能够运行了。


作者: zhuyiwen    时间: 2017-9-14 12:09
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHomeAccess"”
[attach]61993[/attach]

启用自定义功能区
[attach]61994[/attach]

是不是很爽?



作者: access新新新手    时间: 2017-9-14 12:23
zhuyiwen 发表于 2017-9-14 12:09
如果想将自定义的功能区放在 “开始” 选项卡的前面,只需要在第一个 tab 中输入 “ insertBeforeQ="TabHom ...

谢谢分享
作者: ardu95    时间: 2017-9-15 06:17
学习学习
作者: c101    时间: 2017-9-15 08:12
谢谢分享
作者: kui54312312    时间: 2017-9-20 11:02
yyy
作者: 六月雪    时间: 2018-1-7 23:18
OOOOOOOOOO
作者: lshstruc    时间: 2018-1-9 14:20
学习!
作者: xiaowuo2    时间: 2018-1-17 14:50
继续学习,谢谢分享
作者: qtx    时间: 2018-4-29 03:18
看看
作者: 天涯沦落20131    时间: 2018-5-7 08:20
ddddd
作者: 做梦    时间: 2018-6-30 08:01
acc功能区学习
作者: jiutianxingchen    时间: 2018-8-21 14:30
看看
作者: XMX64311    时间: 2018-11-16 16:55
有好多问题还没解决,特别是选项卡会自动跳转到第一个,用起来很不爽

作者: 小何    时间: 2020-1-8 20:52
526262626226




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3