功能区 RibbonX 的 OpenXML 架构元素


在编写自定义 Office 界面的XML时,总是以customUI元素开始,紧接着是Ribbon元素。下面我们将详细介绍customUI元素、Ribbon元素,以及tabs、tab和group元素,在自定义界面时几乎总是要使用这些元素。

customUI

要创建格式良好的XML文档,必须包含一个且唯一一个"最外层的元素",嵌套所有其他的元素。这个最外层的元素被称作"根元素"。对于功能区定制来说,该元素就是customUI元素。

以下分别是 Office 2007/2010+ 的 customUI 样式:

<!-- 代码1: -->
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<!-- All other instructions go here -->
</customUI>
<!-- 代码2: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
	<!-- All other instructions go here -->
</customUI>

然后,单击"validate"按钮验证代码。注意,验证代码是一个好习惯。

customUI 的相关属性

1. customUI 标签必须制定 xmlns 属性

静态属性允许值对应 Office 版本
xmlnshttp://schemas.microsoft.com/office/2006/01/customuioffice 2007
xmlnshttp://schemas.microsoft.com/office/2009/07/customuioffice 2010+

2. 带有回调签名的可选的静态属性和动态属性

静态属性动态属性允许值默认值动态属性的VBA回调签名
xmlns:Q1至1024个字符
onLoad1至1024个字符Sub onLoad(Ribbon as IRibbonUI)
loadImage1至1024个字符Sub loadImage(imageID as string,ByRef returnedVal)

例如,添加onLoad属性的代码如下:

<!-- 代码3: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad">
	<!-- All other instructions go here -->
</customUI>

customUI元素的子对象

customUI标签是一个容器,包含其他对象。实际上,customUI仅能包含下列元素:

  • commands

  • ribbon

ribbon元素

ribbon元素没有任何必需的属性,其可选的静态属性如下:

静态属性动态属性允许值默认值说名
startFromScratchtrue,false,1,0FalseValse =True 时,会隐藏内置功能区

如下代码回会隐藏内置的功能区:

<!-- 代码4: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
   <ribbon startFromScratch="true">
	  <!-- All other instructions go here -->
   </ribbon>
</customUI>

ribbon元素的子对象

ribbon对象可以包含下列元素:

  • contextualtabs
  • officeMenu
  • qat
  • abs

tabs(选项卡容器)

  • 这是除customUI和ribbon之外的另一个容器,必须嵌套在功能区(Ribbon)块中。
  • tabs元素是要使用的最容易的元素之一,没有单个的属性,其子元素是 tab。
  • tabs元素是一个容器元素,用于包含特定引用的(或创建的)选项卡(tab)控件。
<!-- 代码5: -->
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
   <tabs>
      <!-- All other instructions go here -->
   </tabs>
</ribbon>
</customUI>

tab(选项卡)

tab元素包含在tabs容器中,用于创建或引用功能区中单个的选项卡。

  • tabs(复数形式)引用整个选项卡集合,而tab(单数形式)指定特定的选项卡。
  • tab 的子元素对象仅仅可以包含组元素,例如内置的剪贴板组或者自已创建的自定义组。

tab 对象是层级中的第一个元素,主要有以下6个属性:

静态属性动态属性允许值默认值动态属性的VBA回调签名备注
id----必需
insert----
tag-1至1024个字符--
keytipgetKeytip1至3个字符-Sub GetKeytip(control As IRibbonControl,ByRef returnedVal)
labelgetLabel1至1024个字符-Sub GetLabel(control As IRibbonControl,
visiblegetVisibletrue,false,1,0trueSub GetVisible(control As IRibbonControl, ByRef returnedVal)

其中,id 属性必须从下表中选择且只能选择其中一个:

id属性形式何时使用
id当创建自已的选项卡时
idMso当使用现有的Microsoft选项卡时
idQ当创建在命名空间之间共享的选项卡时

如果要设置某选项卡相对于任何其它现有的选项卡的位置,则使用下表列出的 insert 属性之一:

insert属性形式允许值默认值何时使用
insertAfterMso有效的 Mso 选项卡 ID在最近的选项卡之后插入在 Microsoft 选项卡之后插入
insertBeforeMso有效的 Mso 选项卡 ID在最近的选项卡之后插入在 Microsoft 选项卡之前插入
insertAfterQ有效的选项卡 idQ在最近的选项卡之后插入在共享的命名空间选项卡之后插入
insertBeforeQ有效的选项卡 idQ在最近的选项卡之后插入在共享的命名空间选项卡之前插入

内置的选项卡

当在功能区中处理选项卡时,有两种类型的选项卡:内置的和自定义的。内置选项卡由Microsoft提供,而自定义选项卡由自已创建。

1. 引用内置选项卡
每个内置选项卡都有自已唯一的idMso属性,通过调用该属性引用这个选项卡,因此应该弄清楚idMso属性。
下表列出了Excel、Access和Word的一些最通用的选项卡名称,注意大小写。

选项卡名称idMso(Excel)idMso(Word)idMso(Access)
开始TabHomeTabHomeTabHomeAccess
插入TabInsertTabInsert-
页面布局TabPageLayoutExcelTabPageLayoutWord-
公式TabFormulas--
数据TabData--
视图TabReviewTabReviewWord-
创建--TabCreate
外部数据--TabExternalData
数据库工具--TabDatabaseTools

2. 修改内置选项卡
通过修改内置选项卡的 visible/getVisible 属性可以控制内置选项卡的显示与否,例如以下代码可以隐藏开始选项卡:

<!-- 代码6: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
	<tabs>
		<tab idMso="TabHome" visible="false">
		</tab>
	</tabs>
</ribbon>
</customUI>

自定义选项卡

1. 创建自定义选项卡
创建自定义选项卡时,不需要引用idMso,而是为新选项卡指定一个唯一的id属性。
如下代码将创建一个名为 my_Tab 的自定义选项卡,并放在所有选项卡的最后:

<!-- 代码7: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
	<tabs>
		<tab id="myTab"  label="my_Tab">
		</tab>
	</tabs>
</ribbon>
</customUI>

2. 设定自定义选项卡位置
如下代码将 my_Tab 放置在 开始选项卡(idMso=“TabHome”)之后:

<!-- 代码8: -->
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
	<tab id="myTab"  label="my_Tab"  insertAfterMso="TabHome" >
	</tab>
</tabs>
</ribbon>
</customUI>

group(组)元素

1. group 元素的 id 属性
与tab元素一样,每个组需要一个唯一的id属性,如下表所示。

id属性形式何时使用
id当创建自已的选项卡时
idMso当使用现有的Microsoft选项卡时
idQ当创建在命名空间之间共享的选项卡时

2. 带有回调签名的可选的静态属性和动态属性
要设置某个组相对于任何其他现有的组的位置,需要指定下表列出的 insert 属性之一:

insert属性形式允许值默认值何时使用
insertAfterMso有效的 Mso 选项卡 ID在最近的选项卡之后插入在 Microsoft 选项卡之后插入
insertBeforeMso有效的 Mso 选项卡 ID在最近的选项卡之后插入在 Microsoft 选项卡之前插入
insertAfterQ有效的选项卡 idQ在最近的选项卡之后插入在共享的命名空间选项卡之后插入
insertBeforeQ有效的选项卡 idQ在最近的选项卡之后插入在共享的命名空间选项卡之前插入

除以上2个属性之外,group 控件还有以下8项静态属性和动态属性:

静态属性动态属性允许值默认值动态属性的VBA回调签名
imagegetImage1至1024个字符-Sub GetImage(control As IRibbonControl, ByRef returnedVal)
imageMsogetImage1至1024个字符-同上
keytipgetKeytip1至3个字符-Sub GetKeytip(control As IRibbonControl, ByRef returnedVal)
labelgetLabel1至1024个字符-Sub GetLabel(control As IRibbonControl, ByRef returnedVal)
screentipgetScreentip1至1024个字符-Sub GetScreentip(control As IRibbonControl, ByRef returnedVal)
supertipgetSupertip1至1024个字符-Sub GetSupertip(control As IRibbonControl, ByRef returnedVal)
tag-1至1024个字符--
visiblegetVisibletrue,false,1,0trueSub GetVisible(control As IRibbonControl, ByRef returnedVal)

3. group 元素的子对象
group 元素能够包含下列14种对象的任意组合:

  group 的字对象详细用法将在后续更新中进行详细讲解。
控件名称
box
button按钮
buttonGroup按钮组
checkBox复选框
comboBox组合框
dropDown下拉控件
dynamicMenu动态菜单
editBox编辑框
gallery
labelControl标签控件
menu菜单
menuSeparator菜单分隔条
splitButton拆分按钮
toggleButton切换按钮

下面是在自定义选项卡中创建一个自定义组的XML代码:

<!-- 代码9: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
	<tab id="myTab1"  label="my_Tab1"  insertBeforeMso="TabHome">
		<group id="myGroup1"  label="my_Group1">
			 <!-- All other instructions go here -->
		</group>
	</tab>
</tabs>
</ribbon>
</customUI>

以上代码在 office 2013 中的效果
注意: 经实测,在 office 2016 中,创建没有按钮的空组(group)是,该组不会显示。

内置组

使用内置组,仍然能够提供内置功能。此外,能够将经常使用的控件组合在一起。

1. 引用内置组
与选项卡相似,通过引用其id属性识别自定义组,通过引用其idMso属性识别内置组。
下表列出了Excel、Access和Word中的一些内置组。

显示的名称idMso名称
剪贴板GroupClipboard
字体GroupFont
形状GroupShapes

例如,隐藏Excel中剪贴板组的XML如下:

<!-- 代码10: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
	<tab idMso="TabHome">
		<group idMso="GroupClipboard"  visible="false">
		</group>
	</tab>
</tabs>
</ribbon>
</customUI>

2. 在自定义选项卡中使用内置组

能够在自已的选项卡中使用内置组,这是 Office 的一项关键功能。
下表列出了在 Excel 中审阅需要使用到的组。

组名默认的选项卡名称
剪贴板开始GroupClipboard
字体开始GroupFont
公式审核公式GroupFormulaAuditing
批注审阅GroupComments
编辑开始GroupEditingExcel

现在,创建一个包含上述组的自定义选项卡,其XML代码如下:

<!-- 代码11: -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
   <tab id="MyTool"  label="My_Tool"  insertBeforeMso="TabHome">
      <group idMso="GroupClipboard"/>
      <group idMso="GroupFont"/>
      <group idMso="GroupFormulaAuditing"/>
      <group idMso="GroupComments"/>
      <group idMso="GroupEditingExcel"/>
   </tab>
</tabs>
</ribbon>
</customUI>

代码11 效果如图

自定义组

1. 创建自定义组
与tab元素一样,通过指定一个唯一的id属性来创建自定义组,而不是引用内置组的idMso。
在上述 代码11 的最后一个 group 之后添加如下代码:

<!--  代码12:  -->
	<group id="myGroup"  label="my_Group" >
	</group>

则会在最后创建一个名为 “my_Group” 的组,其效果如下:
代码12 效果如上图
**注意:**上述代码并没有在同一行中开始和结束组代码。这样是方便在其中添加其他控件,例如按钮、复选框或动态菜单等。
2. 放置自定义组

有时,可能想让自定义的组放置在指定的位置或按指定的顺序排列,可以采取两种方法来实现。

方法1:在XML代码中,按想要显示的顺序编写代码。

方法2:使用insertBeforeMso属性或insertAfterMso属性,在某个组之前或之后放置自定义的组。例如,将上述 代码12 替换为如下代码,自定义组 “my_Group” 放置在"字体"组之前:

<!--   代码13:  -->
   <group id="myGroup"  label="my_Group"   insertBeforeMso="GroupFont">
   </group>

3. 在内置选项卡中的自定义组
如下代码会在 “开始” 选项卡中有一个自定义组 my_Group

<!--  代码14:  -->
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
   <tab idMso="TabHome">
      <group id="myGroup"  label="my_Group"  insertBeforeMso="GroupFont">
      </group>
   </tab>
</tabs>
</ribbon>
</customUI>

代码14 效果如上图

以下是来自微软的关于功能区选项卡的官方参考文件。

Office 2010帮助文件:Office Fluent用户界面控件标识符
Office 2013帮助文件:Office Fluent用户界面控件标识符
Office 2016帮助文件:Office Fluent用户界面控件标识符
有关适用于开发人员的Office Fluent UI(功能区)的信息
Office 2010加载项:图标库

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值