细品RibbonX(14):核心的OpenXML架构元素

细品RibbonX(14):核心的OpenXML架构元素

资料整理来自于论坛
完整版下载地址:http://download.csdn.net/download/nodeman/10264659

 Loading ...

 

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

customUI元素

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

现在,打开CustomUI Editor,输入下面的代码:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<!– All other instructions go here –>

</customUI>

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

1customUI元素必需的属性

每个customUI标签必须指定xmlns属性,如下表1所示。

1customUI元素必需的属性

静态属性

允许值

xmlns

http://schemas.microsoft.com/office/2006/01/customui

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

也可以在customUI标签中添加下表2列出的部分或全部属性。当然,这些属性不一定非得在XML中使用,随您的需要而定。

2customUI元素的可选属性

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

xmlns:Q

(none)

11024个字符

(none)

(none)

(none)

onLoad

11024个字符

(none)

Sub onLoad(Ribbon as IRibbonUI)

(none)

loadImage

11024个字符

(none)

Sub loadImage(imageID as string,ByRef returnedVal)

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

<customUI

xmlns="http://schemas.microsoft.com/office/2006/01/customui"

onLoad="rxiRibbonUI_onLoad">

<!– All other instructions go here –>

</customUI>

注意,onLoad属性只是被嵌套在与customUI元素相同的<>括号内,对其他可选属性也是如此。并且,可以每行列出一个属性,无须包括连续或行中断的代码。

3customUI元素的子对象

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

         commands

         ribbon

ribbon元素

要修改功能区,则要在customUI标签内嵌套ribbon元素,如下所示:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon>

<!– All other instructions go here –>

</ribbon>

</customUI>

1ribbon元素必需的属性

ribbon元素没有任何必需的属性。

2、可选的静态属性

ribbon元素有一个非常特别的属性,如下表3所示。

3ribbon元素的可选属性

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

startFromScratch

none

true,false,1,0

false

none

startFromScratch属性能够隐藏整个内置的功能区。因为该属性的默认值为false,所以前面的示例代码中都忽略了该属性。下面的XML能够得到相同的结果:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<!– All other instructions go here –>

</ribbon>

</customUI>

3ribbon元素的子对象

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

         contextualTabs

         officeMenu

         qat

         tabs

tabs元素

这是除customUIribbon之外的另一个容器,必须嵌套在功能区(Ribbon)块中。示例代码如下:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon>

<tabs>

<!– All other instructions go here –>

</tabs>

</ribbon>

</customUI>

tabs标签的目的是集中要引用、创建或修改的每个元素和单个选项卡。

1tabs元素必需的属性

tabs元素是要使用的最容易的元素之一,没有单个的属性。

2tabs元素的子对象

tabs元素是一个容器元素,用于包含特定引用的(或创建的)选项卡控件。

tab元素

tab元素包含在tabs容器中,用于创建或引用功能区中单个的选项卡。理解tabs对象和tab对象之间的不同是非常重要的。tabs(复数形式)引用整个选项卡集合,而tab(单数形式)指定特定的选项卡。

1tab元素必需的属性

tab对象是层级中的第一个元素,需要id属性。必须从下表4中选择且只能选择其中一个:

4tab元素的id属性

属性

何时使用

id

当创建自已的选项卡时

idMso

当使用现有的Microsoft选项卡时

idQ

当创建在命名空间之间共享的选项卡时

为什么需要id属性的原因很简单:如果选项卡没有id属性,那么如何引用该选项卡呢?

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

tab元素提供了几个可选的静态属性。如果要设置某选项卡相对于任何其它现有的选项卡的位置,则使用下表5列出的insert属性之一。

5tab控件可选的insert属性

insert属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso选项卡

在最近的选项卡之后插入

Microsoft选项卡之后插入

insertBeforeMso

有效的Mso选项卡

在最近的选项卡之后插入

Microsoft选项卡之前插入

insertAfterQ

有效的选项卡idQ

在最近的选项卡之后插入

在共享的命名空间选项卡之后插入

insertBeforeQ

有效的选项卡idQ

在最近的选项卡之后插入

在共享的命名空间选项卡之前插入

注意,如果没有指定insert属性,那么选项卡将被添加到最后一个选项卡之后,而不管是自定义选项卡还是内置选项卡。

tab控件也接受下表6列出的任一或全部属性:

6tab控件的可选属性和回调

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

keytip

getKeytip

13个字符

none

Sub GetKeytip(control As IRibbonControl,ByRef returnedVal)

label

getLabel

11024个字符

none

Sub GetLabel(control As IRibbonControl,

ByRef returnedVal)

tag

none

11024个字符

none

n/a

visible

getVisible

true,false,1,0

true

Sub GetVisible(control As IRibbonControl, ByRef returnedVal)

注意,动态回调用于在文件使用时动态修改功能区,使用了VBA代码来运行。

3tab元素的子对象

tab对象仅仅可以包含组元素,例如内置的剪贴板组或者自已创建的自定义组。

4、内置的选项卡

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

1)引用内置选项卡

每个内置选项卡都有自已唯一的idMso属性,通过调用该属性引用这个选项卡,因此应该弄清楚idMso属性。

下表7列出了ExcelAccessWord的一些最通用的选项卡名称,注意大小写。

7:最常用的内置选项卡名称

选项卡名称

idMsoExcel

idMsoWord

idMsoAccess

开始

TabHome

TabHome

TabHomeAccess

插入

TabInsert

TabInsert

none

页面布局

TabPageLayoutExcel

TabPageLayoutWord

none

公式

TabFormulas

none

none

数据

TabData

none

none

视图

TabReview

TabReviewWord

none

创建

none

none

TabCreate

外部数据

none

none

TabExternalData

数据库工具

none

none

TabDatabaseTools

2)修改内置选项卡

步骤1 打开Excel 2007创建一个新的工作簿。由于不需要任何动态回调,因此将该文件保存为Excel的默认工作簿格式(xlsx)

步骤2 关闭Excel,然后在CustomUI Editor中打开该工作簿。

步骤3 输入下面的XML代码:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab idMso="TabHome"visible="false">

</tab>

</tabs>

</ribbon>

</customUI>

步骤4 验证代码并保存,关闭CustomUI Editor

步骤5 Excel中打开该工作簿文件,此时"开始"选项卡没有了。

此时,关闭该工作簿文件,将使"开始"选项卡重新出现。

5、自定义选项卡

1)创建自定义选项卡

创建自定义选项卡时,不需要引用idMso,而是为新选项卡指定一个唯一的id属性。

继续上面的练习,在Excel中关闭工作簿文件,在customUI Editor中重新打开该文件,输入下面的代码:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab id="rxtabDemo"label="Demo">

</tab>

</tabs>

</ribbon>

</customUI>

验证代码并关闭该文件,然后在Excel中重新打开该工作簿,此时在功能区中将增加一个新的自定义选项卡,如下图1所示。

1:功能区中新增加的自定义选项卡

2)放置自定义选项卡

现在我们将自定义选项卡放置在"开始"选项卡之后,代码如下:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab id="rxtabDemo"

label="Demo"

insertAfterMso="TabHome">

</tab>

</tabs>

</ribbon>

</customUI>

即为insert属性指定有效的idMso,将自定义选项卡放置在想要的位置。此时,工作簿如下图2所示。

2:自定义选项卡放置在"开始"和"插入"选项卡之间

注意,当插入多个控件时,将按照它们在XML代码中的顺序插入。

group元素

group元素的作用是为实际的按钮、复选框、菜单和其他允许在功能区中配置的命令创建占位符。

1group元素必需的属性

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

8group元素的id属性

属性

何时使用

id

当创建自已的组时

idMso

当使用现有的Microsoft组时

idQ

当创建在命名空间之间共享的组时

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

要设置某个组相对于任何其他现有的组的位置,需要指定下表9列出的insert属性之一。

9group控件可选的insert属性

insert属性

允许值

默认值

何时使用

insertAfterMso

有效的Mso

最近的组之后插入

Microsoft组之后插入

insertBeforeMso

有效的Mso

最近的组之后插入

Microsoft组之前插入

insertAfterQ

有效的组idQ

最近的组之后插入

共享的命名空间组之后插入

insertBeforeQ

有效的组idQ

最近的组之后插入

共享的命名空间组之前插入

group控件也接受下表10列出的任何或全部属性。

10group控件可选的属性和回调

静态属性

动态属性

允许值

默认值

动态属性的VBA回调签名

image

getImage

11024个字符

none

Sub GetImage(control As IRibbonControl, ByRef returnedVal)

imageMso

getImage

11024个字符

none

同上

keytip

getKeytip

13个字符

none

Sub GetKeytip(control As IRibbonControl, ByRef returnedVal)

label

getLabel

11024个字符

none

Sub GetLabel(control As IRibbonControl, ByRef returnedVal)

screentip

getScreentip

11024个字符

none

Sub GetScreentip(control As IRibbonControl, ByRef returnedVal)

supertip

getSupertip

11024个字符

none

Sub GetSupertip(control As IRibbonControl, ByRef returnedVal)

tag

none

11024个字符

none

none

visible

getVisible

true,false,1,0

true

Sub GetVisible(control As IRibbonControl, ByRef returnedVal)

3group元素的子对象

group元素能够包含下列对象的任意组合:

         box

         button

         buttonGroup

         checkBox

         comboBox

         control

         dialogBoxLauncher

         dropdown

         editBox

         gallery

         labelControl

         menu

         separator

         splitButton

         toggleButton

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

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab id="rxtabDemo"

label="Sample"

insertBeforeMso="TabHome">

<group id="rxgrpDemo"

label="Demo Group"

imageMso="HappyFace"

keytip="D"

screentip="This is my screentip"

supertip="This is my supertip">

</group>

</tab>

</tabs>

</ribbon>

</customUI>

结果如下图3所示:

3:自定义选项卡中的自定义组

注意,在上面的XML中设置的属性,仅label属性的值出现在功能区中。大多数可选的属性例如imageMso,在组控件中将没有可见的效果。因此,经调试后,可以忽略一些可选的属性。

4、内置组

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

1)引用内置组

与选项卡相似,通过引用其id属性识别自定义组,通过引用其idMso属性识别内置组。下表11列出了ExcelAccessWord中的一些内置组。

11:在ExcelAccessWord中通用的组

显示的名称

idMso名称

剪贴板

GroupClipboard

字体

GroupFont

形状

GroupShapes

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

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab idMso="TabHome">

<group idMso="GroupClipboard"

visible="false">

</group>

</tab>

</tabs>

</ribbon>

</customUI>

结果如下图4所示:

4:隐藏了"剪贴板"组的"开始"选项卡

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

能够在自已的选项卡中使用内置组,这是Office 2007的一项关键功能。

Microsoft虽然花费了大量的人力和财力研究用户的使用习惯,但默认的控件顺序不会总是满足特定的需求。因此,利用重复使用Microsoft内置组的能力,可以容易地在单个选项卡中放置最常用的命令,这样更方便于使用且随时可见,避免在功能区选项卡之间来回切换。

在许多场合,创建一个自定义且经过整理的选项卡能够节省无数次的键击并极大地提高生产力。例如,假设要花时间审阅Excel工作簿的一致性,在默认的功能区中,需要经常在功能区选项卡之间来回切换以利用所需要的控件,下表12列出了在Excel中需要使用到的组。

12:在Excel中常用的审核工具的位置

组名

默认的选项卡

名称

剪贴板

开始

GroupClipboard

字体

开始

GroupFont

公式审核

公式

GroupFormulaAuditing

批注

审阅

GroupComments

编辑

开始

GroupEditingExcel

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

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab id="rxtabMyTools"

label="My Tools"

insertBeforeMso="TabHome">

<group idMso="GroupClipboard"/>

<group idMso="GroupFont"/>

<group idMso="GroupFormulaAuditing"/>

<group idMso="GroupComments"/>

<group idMso="GroupEditingExcel"/>

</tab>

</tabs>

</ribbon>

</customUI>

注意,在上面的代码中,group元素没有使用单独的结束标签,而是在行尾使用/>结束。这样的编写非常简洁。此时,结果如下图5所示。

5:填充内置组的自定义选项卡

注意,在自定义组中引用的内置组只是原来组的副本,内置组仍然在原来的位置。

5、自定义组

1)创建自定义组

tab元素一样,通过指定一个唯一的id属性来创建自定义组,而不是引用内置组的idMso

继续上面的示例,关闭Excel文件,在CustomUI Editor中重新打开该文件,在最后一个group标签之后,添加下面的XML代码:

<group id="rxgrpMyGroup"

label="My Group">

</group>

注意,上述代码并没有在同一行中开始和结束组代码。这样,方便在其中添加其他控件,例如按钮、复选框或动态菜单。

验证代码后保存文件并关闭CustomUI Editor。再打开Excel,此时,在自定义选项卡中添加了一个空组,如下图6所示。

6:自定义选项卡中的自定义组

2)放置自定义组

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

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

方法2:使用insertBeforeMso属性或insertAfterMso属性,在某个组之前或之后放置自定义的组。例如,上例中使用下面的代码将自定义组放置在"字体"组之前:

<group id="rxgrpMyGroup"

label="My Group"

insertBeforeMso="GroupFont">

</group>

结果如下图7所示。

7:将自定义选项卡放置在"剪贴板"组和"字体"组之间

3)在内置选项卡中的自定义组

在内置选项卡中插入自定义组也是很容易的,下面仍以Excel 2007为例来演示。

步骤1 创建一个新的Excel文档并保存,然后关闭该文档。

步骤2 CustomUI Editor中打开该文档,并输入下面的代码:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">

<ribbon startFromScratch="false">

<tabs>

<tab idMso="TabHome">

<group id="rxgrpMyGroup"

label="My Group"

insertBeforeMso="GroupFont">

</group>

</tab>

</tabs>

</ribbon>

</customUI>

步骤3 验证代码并保存代码,然后关闭CustomUI Editor

步骤4 Excel中重新打开该文件,现在看到在"开始"选项卡中有一个自定义组,如下图8所示。

8:在"开始"选项卡中的自定义组

此时,在内置的"开始"选项卡中添加了自定义组"My Group",并且将该组放置在第二位,即"字体"组之前。然后,您就可以在自定义组中添加想要的控件了!

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值