2009年08月31日, 1:20 下午

Loading ...
在Office 2007中,可以使用比以前版本更多的控件,并且在大多数情况下也能改变控件尺寸。各种各样的控件选项意味着可以通过从RibbonX工具箱中选择正确的控件并正确地设置它们来创建更好的界面。下面,让我们先概要了解一下RibbonX控件。
RibbonX控件概览
在Office 2007中,控件不仅仅有特定的作用,而且有大小和上下文内容。例如,在大多数编程环境中按钮都是标准形式的按钮,然而在RibbonX中,可以创建大尺寸或者标准尺寸的按钮。此外,按钮的使用(以及在某些情况下的外观)随上下文而不同:
l 功能区中的标准按钮
l 对话框启动器的一部分
l 下拉列表的一部分
l 在快速访问工具栏中(QAT)
l 拆分按钮的一部分
l 带有标题的拆分按钮的一部分
l 在控件组内
l 菜单的一部分
上下文使得在如何使用控件方面有非常大的不同。例如,在对话框启动器里面必须包括一个按钮。Office限制下拉列表中按钮的数量是16,但不必包括任何任何内容。在拆分按钮里包括的按钮总是可见的,如果试图使用visible属性,Office就会激发错误。
下表提供了RibbonX控件列表及其简要的介绍。
|
控件名称
|
描 述
|
|
框(box)
|
将控件组合在一个组里。可以在框里放置任何控件,将控件按水平或垂直流向设置。必须提供boxStyle属性:vertical或horizontal。与按钮组控件不同,除了设置控件流向外,框控件不会提供可视化外观。
|
|
按钮(button)
|
提供基本的执行功能。单击按钮,会发生某项操作。上文已提及,Office在多种上下文内容中使用按钮控件。
|
|
按钮组(buttonGroup)
|
将不同类型的按钮组合在一起。按钮出现在自然的框里面,并且Office将它们放置在一起来表明其以某种方式联系。可以使用其组合下列控件:按钮、切换按钮、库、菜单、动态菜单和拆分按钮控件。
|
|
复选框(checkBox)
|
提供基本的选择功能。通过单击该控件,用户启用或禁用某选项。Office为复选框控件提供了两种上下文环境,包括作为单独的控件或者是菜单的一部分。
|
|
组合框(comboBox)
|
为用户显示一列选项,使用item控件创建选项列表。每个comboBox控件必须包括至少一个item控件作为子项。当使用comboBox控件时,用户也能够输入一个不在列表中出现的值(dropDown控件需要用户选择列表中的某个项目)。
|
|
下拉控件(dropDown)
|
为用户为示一列选项,使用item或button控件创建选项列表。列表至少应包含两类可选的控件之一。用户必须选择提供的列表中的某选项。当用户选择button而不是item时,Office执行所需求的动作,而不是选择期望的选项。
|
|
动态菜单(dynamicMenu)
|
定义在运行时而不是设计时所创建的菜单。菜单内容能够修改以满足特定的需要。必须包括getContent回调来使用该控件。dynamicMenu控件能够作为buttonGroup、menu或splitButton控件的一部分出现。
|
|
编辑框(editBox)
|
让用户输入纯文本到功能区中。可以使用这项功能执行某任务,例如搜索。使用这个控件来进行任何不能通过使用其它控件来定义的输入。
|
|
库(gallery)
|
在下拉结构中显示一组控件以节省功能区空间。Word在“开始”选项卡的“样式”组中使用这样的组。gallery控件不同于其它的组合控件,它提供了可以以不同方式控制的下拉列表。可以使用rows和columns属性修改控件的外观。itemWidth和itemHeight属性用来控制组中每项的大小。在buttonGroup或menu控件里使用Gallery控件,或者作为独立的控件。要在库中显示项目,则需在getItemCount、getItemImage和getItemLabel回调中添加代码。
|
|
标签控件(labelControl)
|
在屏幕中创建标签。可以在标签控件组或者不易使其以其它形式识别的元素中使用该控件。用户不能够与提供的标签相交互。
|
|
菜单(menu)
|
定义在设计时创建的菜单。菜单可以包含诸如button和checkBox控件之类的控件。可以单独使用菜单,也可以作为splitButton控件的一部分。使用menuSeparator控件在菜单元素之间放置分隔条。与gallery控件不同,menu控件在单列呈现所有的选项(更像老版本Office的菜单系统)。
|
|
菜单分隔条(menuSeparator)
|
在任何控件组里提供分隔元素。
|
|
拆分按钮(splitButton)
|
创建具有默认操作和一列选择性选项的按钮。拆分按钮最好的示例之一是“开始”选项卡的“剪贴板”组中的“粘贴”按钮。必须包括button或toggleButton控件为默认控件。在menu控件里出现可选的操作,这里可以添加button或toggleButton控件。
|
|
切换按钮(toggleButton)
|
提供checkBox和button控件的组合。用户通过单击toggleButton选择某状态和执行某操作。
|
通用的RibbonX控件属性
RibbonX提供了许多通用的属性,可以用来控制应用程序的外观。下表简要介绍了大多数通用的属性。
|
属性
|
描 述
|
|
description
|
当菜单的itemSize属性设置为大时指定Office显示的描述文本。
|
|
enabled
|
确定Office是否启用或禁用控件。可以选择true或false作为其值。
|
|
id
|
为自定义控件指定标识符。不能与idMso或idQ属性一起使用。
|
|
idMso
|
为内置控件指定标识符。不能与id或idQ属性一起使用。
|
|
idQ
|
为限定的控件指定标识符(限定的控件取决于定义的自定义命名空间)。不能与id或idMso属性一起使用。
|
|
image
|
定义控件使用的自定义图像的名称。
|
|
imageMso
|
定义控件使用的内置图像的名称。
|
|
insertAfterMso
|
基于内置控件的位置,标识新控件的位置。
|
|
insertAfterQ
|
基于限定的控件的位置,标识新控件的位置。
|
|
insertBeforeMso
|
基于内置控件的位置,标识新控件的位置。
|
|
insertBeforeQ
|
基于限定的控件的位置,标识新控件的位置。
|
|
itemSize
|
确定菜单或其它控件项的大小。可以选择large和normal。
|
|
keyTip
|
对控件添加指定的加速键组合。当用户按下Alt键时显示键提示。可以指定任意键组合,使用1至3个字母。
|
|
label
|
指定控件显示的文本。
|
|
screenTip
|
提供简要的提示,帮助用户理解控件的用途。
|
|
showImage
|
确定Office是否显示与控件项相关的图像。可以选择true或false。
|
|
showItemImage
|
确定Office是否显示与菜单或其它控件项相关的图像。可以选择true或false。
|
|
showItemLabel
|
确定Office是否显示与菜单或其它控件项相前的标签。可以选择true或false。
|
|
showLabel
|
确定Office是否显示与控件相关的标签。可以选择true或false。
|
|
size
|
确定控件的大小。可以选择large或normal。
|
|
sizeString
|
设置控件的大小来包含指定宽度的字符串。
|
|
superTip
|
提供详细的提示,帮助用户理解控件的用途。
|
|
tag
|
包含用户定义的数据,可以在应用程序中用来与控件或其它元素交互。
|
|
title
|
为menuSeparator控件指定显示的文本代替水平线。
|
|
visible
|
确定Office是否显示某控件或其它功能。可以选择true或false。
|
通用的RibbonX控件回调
RibbonX提供了许多通用的回调,可用于监控应用程序。下表介绍了创建应用程序时常用的回调。
|
回调
|
相关的控件
|
描述
|
|
getContent
|
dynamicMenu
|
定义控件的内容。
|
|
getDescription
|
多个控件
|
获取控件的描述。
|
|
getEnabled
|
多个控件
|
让代码启用或禁用控件。
|
|
getImage
|
多个控件
|
获取为控件提供的自定义图像。
|
|
getImageMso
|
多个控件
|
获取为控件定义的标准图像。
|
|
getItemCount
|
comboBox,DropDown,gallery
|
获取控件的项目列表中的项目数。
|
|
getItemHeight
|
gallery
|
以像素为单位确定项目显示在屏幕中的高度。
|
|
getItemID
|
comboBox,dropDown,gallery
|
确定当前项目的ID。
|
|
getItemImage
|
comboBox,dropDown,gallery
|
获取与当前项目相关的图像。
|
|
getItemLabel
|
comboBox,dropDown,gallery
|
获取与当前项目相关的标签。
|
|
getItemScreenTip
|
comboBox,dropDown,gallery
|
获取与当前项目相关的屏幕提示。
|
|
getItemSuperTip
|
comboBox,dropDown,gallery
|
获取与当前项目相关的超级提示。
|
|
getItemWidth
|
gallery
|
以像素为单位确定项目显示在屏幕中的宽度。
|
|
getKeytip
|
多个控件
|
获取控件的键提示(加速键)。
|
|
getLabel
|
多个控件
|
获取控件的标签。
|
|
getPressed
|
checkBox,toggleButton
|
确定用户是否以手动的方式单击了控件以激活该控件。
|
|
getScreentip
|
多个控件
|
获取控件的屏幕提示。
|
|
getSelectedItemIndex
|
dropDown,gallery
|
确定用户从列表中选取的项目。
|
|
getSelectItemID
|
gallery
|
获取用户已经在列表中选取的项目的ID。
|
|
getShowImage
|
button
|
确定控件是否显示图像(允许禁止图像,即便已经为控件定义了图像)。
|
|
getShowLabel
|
button
|
确定控件是否显示标签(允许禁止标签,即便已经为控件定义了标签)。
|
|
getSize
|
多个控件
|
基于应用程序的输出,定义控件的大小。
|
|
getSupertip
|
多个控件
|
获取控件的超级工具提示。
|
|
getText
|
comboxBox,editBox
|
获取与列表中当前所选择的项目相关的文本。
|
|
getTitle
|
menuSeparator
|
为指定的控件提供标题。Office显示文本来代替通常显示的水平线。
|
|
getVisible
|
button
|
确定是否控件可见。
|
|
LoadImage
|
customUI
|
作为整体装载与用户界面相关的图像。
|
|
onAction
|
多个控件
|
执行控件在应用程序代码中定义的操作。
|
|
onChange
|
comboBox,editBox
|
在用户选择或控件内容中发现变化。
|
|
onLoad
|
customUI
|
在装载过程中执行指定的操作。
|
2009年06月24日, 1:13 下午

Loading ...
XML Notepad是另一款用来编辑或编写XML代码的工具,可以从Microsoft的站点免费下载。XML Notepad能够捕捉XML架构,从而验证代码。
安装XML Notepad
步骤1 从下列站点下载并安装XML Notepad
http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&displaylang=en
步骤2 从下列站点下载并提取Office 2007 XML架构
http://www.microsoft.com/downloads/details.aspx?familyid=15805380-F2C0-4B80-9AD1-2CB0C300AEF9&displaylang=en
步骤3 设置XML Notepad将架构链接到程序
首先打开XML Notepad,选择菜单“View”─“Schemas”,然后在“XML Schemas”屏幕中选择“File”─“Add schemas”,然后导航到需要提取的XML架构所在的文件夹,默认位置为C:\2007 Office System Developer Resources\Office2007XMLSchema\CustomUI.xsd。装载架构后,显示如下图1所示,单击“OK”。

图1:添加XML架构到XML Notepad
使用XML Notepad
使用XML Notepad最困难的部分是将文件装载并开始,这并不像在CustomUI Editor中打开Excel或Word文件那样简单,甚至不能从中创建新文件。相反,需要打开一个现有的XML文件。有两个主要的办法:
- 与在记事本中一样,将文档重命名为zip文件,复制其中的CustomUI.xml文件进行处理。完成后,将更新的CustomUI.xml文件复制回zip容器,然后将文件改为原始的.xlsx扩展名。
- 创建一个空的文本文件,从CustomUI Editor中复制现有的XML,然后保存为XML文件,接着在XML Notepad中打开该文件,在这里编辑代码,然后将代码复制回CustomUI Editor并保存。
虽然使用XML Notepad的很繁锁,但是它提供了几个功能,可以容易地创建有效的文件而不会有输入错误的危险。这对开发者来说是非常有利的。
下面来演示XML Notepad的使用。
步骤1 在CustomUI Editor中打开MySecondUIModification.xlsx文件。
步骤2 复制代码后关闭CustomUI Editor。
步骤3 在桌面上右击,创建一个新的文本文件并命名为temp.xml。
步骤4 右击该文件并选择编辑(此时不要选择XML Notepad)。
步骤5 粘贴刚才从CustomUI Editor中复制的代码。
步骤6 保存该文本文件并关闭。
步骤7 再在该文件上右击,此时选择“Edit with XML Notepad”。
单击其中的扩展符号(+),得到如下图2所示的屏幕,一个图形化的显示。

图2:XML Notepad
步骤8 右击“tab”元素,选择“Element”,然后选择“Child”,将在最后一个组的下面创建一个新元素,如下图3所示。

图3:添加元素
此时,XML Notepad将提供合适的项目列表,可以从中选择,这里是“group”元素,即设置该元素为组。
步骤9 接下来,在新添加的元素中右击,选择“Atrribute”,然后选择“Child”,此时将出现一个更长的项目列表,从中找到“idMso”后单击选中。
此时,光标将出现在右侧的屏幕中,与idMso一致,输入文本:GroupStyles,注意大小写。如下图4所示。

图4:添加属性
现在,已经修改了代码,于是想试验新代码。
此时,单击菜单“View”─“Source”,当提示是否保存代码时,选择“是”。将出现如下图5所示的屏幕,包含了新添加的标记。

图5:在XML Notepad中查看XML源代码
注意到代码与前面复制的代码稍微有点不同,出现了前面没有看到过的其它元素。
现在已经有了代码,那么继续进行下面的操作。
步骤10 复制整段代码并关闭该窗口。
步骤11 在CustomUI Editor中打开MySecondUIModification.xlsx文件。
步骤12 按Ctrl+A选择所有现有的代码。
步骤13 粘贴从XML Notepad程序中复制的代码。
步骤14 运行有效验证检查,然后保存并关闭文件。
最后,打开MySecondUIModification.xlsx文件以检查“My Tab”选项卡的外观,应该如下图6所示。

图6:Excel中更新后的My Tab选项卡
XML Notepad的优点
XML Notepad提供了许多CustomUI Editor或标准的记事本所没有的优点,包括:
- XML Notepad能够使开发更容易。由于安装了相关的架构,因此能够从下拉列表中选择有效的元素和属性,类似于大多数Microsoft编码工具中的智能感知(IntelliSense)功能。
- 与CustomUI Editor不同,XML Notepad有能力进行查找和替换样式搜索,这是其主要的优点。
- XML Notepad包含一种称之为“Nudge”的功能,将一块代码作为一个单元向上或向下移动。
- 在XML Notepad中显示的步进布局使得容易识别嵌套的元素。
- 因为XML Notedpad被链接到XML架构,所以能够实时进行有效性检查并报告所找到的错误。
XML Notepad的缺点
除了不能将文件放入编辑器或者从编辑器中获得文件外,与CustomUI Editor相比,XML Notepad还有下面的缺点:
- XML Notepad和CustomUI Editor的错误检查功能查找不同的情形。虽然能够从下拉列表中选择从而创建格式良好的XML,但是XML Notepad实际上不会验证代码。因此应该先后使用XML Notepad和CustomUI Editor,使得代码得到完美的验证。
- CustomUI Editor能够生成回调标签,但XML Notepad没有这项功能。
- CustomUI Editor能够使得创建自定义用户界面更容易。除了自动创建某些代码部分外,也提供了易于附加图片到文件中的接口。但XML Notepad缺乏这项功能。
- 如果使用XML Notepad而不是使用CustomUI Editor创建customUI.xml文件来开始功能区修改,那么需要人工链接.rels文件。因此,建议使用CustomUI Editor创建初始的联接。仍然在XML Notepad中创建CustomUI代码的构造,然后将其复制到CustomUI Editor中,正如上面的示例所做的。
2009年06月18日, 1:24 下午

Loading ...
Custom UI Editor是一款用来编辑OpenXML文件的小型工具,更方便且实用。此外,还提供了一些验证和其它工具来减少开发量。
在下面的网站中可以免费下载该工具软件:
http://openxmldeveloper.org/articles/customuieditor.aspx
配置并安装CustomUI Editor
步骤1 对于Windows XP用户来说,首先应该安装Microsoft .NET Framework 2.0
通过“开始”─“控制面板”—“添加或删除程序”,在“添加或删除程序”对话框中检查是否有“Microsoft .NET Framework 2.0”项。如果没有,则可以到Microsoft的网站上下载。
对于Windows Vista用户来说,系统已安装Microsoft .NET Framework 2.0。
步骤2 安装Microsoft Office 2007 Custom UI Editor
下载CustomUI Editor并解压后,双击图标即可安装Microsoft Office 2007 Custom UI Editor。安装完成后,打开Custom UI Editor,然后在该编辑器中打开MyFirstUIModification.xlsx文件,此时如下图1所示。

图1:在Custom UI Editor中打开定制后的Excel 2007文件(注:乱码为中文,由于该编辑器不支持中文,因此显示乱码)
从图1中可以看到,在Custom UI编辑器中文件使用了颜色来区分不同的标记文本,并使用了缩排,版面清新自然。在该编辑器中,颜色能帮助阅读和理解代码;也能容易地嵌入图片、验证代码、存储代码片断,甚至生成响应的回调的代码框架。(回调,即当单击自定义的Ribbon控件时触发的VBA程序,后面将详细介绍。)
使用CustomUI Editor来定制功能区
下面,将使用CustomUI Editor来定制Excel功能区,使用与使用记事本自定义功能区相同的代码,从而演示CustomUI Editor和记事本处理功能区时的不同。
步骤1 打开Excel 2007,创建一个新的Excel文档,并将该文档命名为MySecondModification.xlsx。然后,关闭该文档。
步骤2 打开CustomUI Editor,在该编辑器中打开MySecondUIModification.xlsx文档,然后输入与之前在记事本中定制功能区时相同的代码。
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabCustom"
label="My Tab"
insertBeforeMso="TabHome">
<group idMso="GroupFont">
</group>
<group idMso="GroupZoom">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
步骤3 验证代码
单击CustomUI编辑器工具栏右侧第二个按钮(Validate)。此时,如果没有错误,则会出现如下图2所示的消息框。

图2:在CustomUI Editor中验证代码,没有错误
如果有错误,那么将会指出存在的错误,如下图3所示的消息框。

图3:在CustomUI Editor中验证代码,有错误
在大多数情况下,错误消息都指出了错误发生的原因。
步骤4 一旦验证通过,保存并关闭CustomUI Editor。
步骤5 打开MySecondModification.xlsx文档,如下图4所示,已在该Excel文档中添加了新的选项卡。

图4:通过CustomUI Editor定制的Excel界面
在CustomUI Editor中存储定制模板
有时,您可能想引用以前曾经开发过的自定义界面,而CustomUI Editor提供了这样的功能,将代码存储为模板,方便以后再利用。
步骤1 打开记事本,输入下面的代码:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<!-- Enter your first tab here -->
</tabs>
</ribbon>
</customUI>
步骤2 将该文本文件保存在Program Files\CustomUIEditor\Samples文件夹中,文件名为RibbonBase.xml。
(注意,Program Files\CustomUIEditor为Microsoft Office 2007 Custom UI Editor缺省的安装目录,如果安装在不同的路径下,只需更改为相应的路径即可)
步骤3 打开CustomUI Editor,选择菜单“Samples”,在列表中会看到“RibbonBase”条目,如图5所示。单击该条目,将出现模板中的代码,能使用该代码开始新的功能区定制。

图5:在CustomUI Editor中存储和使用模板
关于CustomUI Editor的使用
虽然使用CustomUI Editor能够使编辑XML代码更容易,但在使用前还是要对其进一步了解:
- CustomUI Editor不会检查XML标记的形式,因此应确保只使用在XML架构中定义的属性。然而,CustomUI Editor能核查在引号内提供的属性的有效性。
- 在编写和调试RibbonX代码时,不能够同时在应用程序和CustomUI Editor中打开要定制的文件。当文件已经在Office应用程序中打开时,试图在CustomUI Editor中保存该文件将导致错误。此外,即便关闭了正在编辑的Office应用程序文档,然后将其在CustomUI Editor中保存,CustomUI Editor仍将覆盖在应用程序中编辑文档所作的任何修改。在另外的工具中作出修改之前关闭应用程序将是更安全的。
- CustomUI Editor没有查找/替换工具,因此,如果打算在XML代码中作大量的编辑,可以先将其复制到另一个应用程序,编辑后再复制回来。
- 当处理充满屏幕的多行XML文件时,CustomUI Editor习惯刷新屏幕使光标总是在屏幕的最后一行,这使得经常需要移至后面想要编辑的行。因此,与前述方法一样,可以将代码复制到另一个应用程序中,编辑后再复制回来。
- CustomUI Editor不支持中文,因此,如果想定制中文界面,必须在记事本中编写代码并将其以utf-8格式保存。含有中文的代码在CustomUI Editor中显示为乱码。
2009年06月3日, 8:20 下午

Loading ...
本文主要介绍如何使用记事本自定义Office 2007功能区,仍然以Excel为例。
下面的示例创建一个非常简单的自定义功能区:在功能区中添加一个新的选项卡,并在该选项卡中放置两个内置的组。
步骤1 创建自定义功能区的文件,该文件中包含用于修改功能区的XML代码。
(1)创建一个名为customUI的文件夹。
(2)在该文件夹中,创建一个名为customUI.xml的文本文件。注意,文件的后缀名为xml,即该文件是一个XML文件。
(3)打开该文本文件,并输入下面的代码:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabCustom"
label="我的选项卡"
insertBeforeMso="TabHome">
<group idMso="GroupFont">
</group>
<group idMso="GroupZoom">
</group>
</tab>
</tabs>
</ribbon>
</customUI>
注意,XML代码是区分大小写的,因此,应输入正确的大小写,否则将导致代码失败。
(4)保存该文件。
步骤2 创建希望使用自定义功能区的文件
(5)创建一个新的Excel 2007工作簿,或者打开一个现有的工作簿。这里,通过创建一个新工作簿来介绍。
(6)在某文件夹中以MyFirstUIModification.xlsx的文件名保存该工作簿,然后退出Excel。
步骤3 修改Excel压缩包中的文件,以引用自定义功能区的XML文件,从而实现自定义功能区。
(7)右击MyFirstUIModification.xlsx文件并选择“重命名”,保存完整的文件名,但是在其后面添加.zip扩展名。当出现警告框时,选择“是”。
现在,该文件修改为zip压缩文件,代替刚才标准的Office文档文件。
(8)双击该压缩文件,将其打开。
(9)拖动customUI文件夹并将其放置在压缩文件夹中。
(10)拖动压缩文件夹中的_rels文件夹到桌面,编辑.rels文件指定该文件和customUI文件夹之间的联系,从而链接功能区的修改。
(11)打开_rels文件夹并使用记事本编辑其.rels文件。在该文件末尾元素之前,插入新的联系语句。在输入语句时,应非常小心地使用标点符号、空格和大小写:
<Relationship
Id="customUIRelID"
Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
Target="customUI/customUI.xml"/>
(12)保存该.rels文件,关闭记事本。
(13)在压缩文件夹中,删除原来的_rels文件夹。
(14)将编辑过的_rels文件夹拖回到压缩文件夹中。
(15)关闭压缩文件夹。
(16)在压缩文件中单击右键并选择“重命名”,去掉名称后面的.zip扩展名,恢复为MyFirstUIModification.xlsx文件名。
(17)打开MyFirstUIModification.xlsx文件。
此时,如果出现错误消息,请重新检查.rels文件和customUI.xml文件,可能由于代码输入错误特别是大小写错误或拼写错误而导致错误。
如果一切正常,那么在“开始”选项卡左侧会出现一个名为“我的选项卡”的新选项卡,包含内置的“字体”组和“显示比例”组,即一个内置组的副本,如下图所示。

示例文档下载:
myFirstUIModification.rar
或