|
自定义RibbonX
之前介绍了RibbonX的常用控件,以及控件的属性、回调函数。了解这些内容之后,就可使用XML自定义RibbonX。最简单的方式就是手工方式:使用【记事本】编写XML代码,再添加到Excel工作簿中。另外,还可使用Custom UI Editor工具快速地定义RibbonX。
1 手工方式自定义RibbonX要自定义RibbonX,需要将工作簿解压出来,并向其中添加自定义代码。下面的例子向功能区添加一个名为【测试】的选项卡,在该选项卡中添加一个按钮用来显示工作表的信息,如图所示。
自定义RibbonX 按以下步骤完成上面的自定义选项卡:
(1)在当前文件夹中创建一个名为customUI的文件夹。
(2)打开【记事本】程序,输入以下内容:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="rxtabTest" label="测试" >
<group id="myGroup" label="显示">
<button id="b1" imageMso="AccessTableEvents"
size="large" label="工作表信息"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
%注意:因为XML要区分大小写,所以一定要注意字母的大小写。
以上代码使用XML自定义RibbonX。有关XML的内容请读者参阅XML相关书籍。下面简单介绍本例中用到的元素。
● <customUI>元素是XML的根容器,名称集(namespace)将它识别作为RibbonX文档。
● <ribbon>元素是一个联系到可见的Ribbon的所有变化的容器。<customUI>元素也可以包含一个<commands>元素,用来重复利用内置控件。
● <tabs>元素是一个联系到Ribbon中现有的或新的选项卡的所有变化的容器。<ribbon>元素也能包含<officeMenu>、<qat>和/或<contextualTabs>元素来控制Ribbon的相应部分。
● < tab id="rxtabTest" label="测试">元素创建自定义的选项卡。
● < group id="myGroup" label="显示">元素创建一个组。
● <button>元素添加一个按钮,该按钮显示名称为“工作表信息”,当单击该按钮时执行工作簿中的showmsg宏,该宏需要在Excel的VBE中编写。
● 接下来就使用</group>、</tab>等代码结束各元素的定义。
(3)选择【文件】|【保存】命令,打开如图20-15所示的【另存为】对话框。在【保存类型】下拉列表框中选择“所有文件”,在【编码】下拉列表框中选择UTF-8,将文件保存到当前文件夹的customUI文件夹下,名称为customUI.xml。
保存XML文件 (4)打开Excel 2007,新建一个工作簿,保存为Test.xlsm。
(5)关闭Excel 2007。并将文件test.xlsm重命名为test.xlsm.zip,使Excel工作簿变为一个压缩文件。
(6)双击压缩文件用WinRar打开该文件。拖动当前文件夹下的customUI文件夹到打开的压缩文件窗口,将该文件夹及文件夹的内容添加到压缩文件中。
添加文件到压缩文件 (7)对话框中的_rels文件夹拖到当前文件夹中。
(8)打开_rels文件夹中的.rels文件,在最后一个Relationship标记与Relationships标记之间添加以下内容,将在工作簿文件与customUI文件夹中的customUI.xml文件之间创建关系。
<Relationship Id="customUIRelID"
Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml" />
(9)保存并关闭.rels文件。
(10)删除图20-16所示对话框中的_rels文件夹,然后拖动第(7)步修改_rels文件夹到压缩文件Test.zip中。
(11)关闭压缩文件窗口,将压缩文件Test.xlsm.zip重命名为Test.xlsm。
(12)用Excel 2007打开Test.xlsm工作簿,将看到如图20-14所示的自定义选项卡。
(13)单击自定义的【测试】选项卡中的【工作表信息】按钮,因为还未编写回调函数,所以将弹出如图20-17所示的错误提示对话框。
(14)按组合键Alt+F11打开VBE环境。
(15)单击主菜单【插入】|【模块】命令增加一个标准模块。
(16)在【模块1】中输入以下过程代码:
Sub showmsg(control As IRibbonControl)
Dim str1 As String
With ActiveSheet
str1 = "当前工作表信息:" & vbNewLine
str1 = str1 & "工作表名:" & .Name & vbNewLine
str1 = str1 & "行:" & .Cells.Rows.Count & vbNewLine
str1 = str1 & "列:" & .Cells.Columns.Count & vbNewLine
str1 = str1 & "已使用区域:" & .UsedRange.Address
End With
MsgBox str1, vbInformation + vbOKOnly, "提示信息"
End Sub
以上代码的作用是:获取活动工作簿的名称、工作表行列数、已使用区域的地址,并使用MsgBox对话框显示出来。
(17)返回Excel界面,单击自定义的【测试】选项卡中的【工作表信息】按钮,将弹出如图20-18所示的提示对话框,显示当前工作表的信息。
错误提示 提示对话框 2 使用UI编辑器自定义RibbonX使用手工方式自定义RibbonX时,操作步骤比较繁琐。首先,需要将工作簿文件修改为压缩文件扩展名,将自定义RibbonX的XML代码添加到压缩文件中,其次,需要修改压缩文件中_rels文件夹中的文件,最后再将压缩文件名称改回Excel工作簿名称。
为了快速、高速地完成RibbonX的定义,微软公司提供了一个名为Custom UI Editor的工具,可用来处理存放在Excel Open XML工作簿中自定义RibbonX的实用程序。使用该工具软件能够自动处理放置自定义UI部分到压缩中的过程,并定义与它的关系,所有的处理只需通过单击鼠标完成。
1).认识UI编辑器读者可从http://openxmldeveloper.org/articles/customuieditor.aspx网站上下载Custom UI Editor工具软件。
在安装Custom UI Editor工具之前,应先检查系统是否安装.NET Framework 2.0。如果没有安装,需要首先下载安装后,再安装Custom UI Editor工具。
安装完成后,UI编辑器将在桌面创建一个快捷方式,双击运行UI编辑器,打开如图20-19所示的操作界面。
UI编辑器 UI编辑器由菜单栏、工具栏和一个文字编辑窗口组成。在文字编辑窗口中可输入自定义UI的XML代码。使用UI编辑器的一般步骤是:
(1)打开一个Office 2007格式的工作簿文件。
(2)在UI编辑器的编辑窗口中输入自定义RibbonX的XML代码。
(3)保存文件,退出UI编辑器。
(4)打开文件即可查看到自定义RibbonX的效果。
从以上步骤可以看出,使用UI编辑器可减少将文件改名为zip、将customUI文件加入压缩包、修改.rels文件等过程,可快速完成自定义UI的过程。
2).使用UI编辑器使用UI编辑器自定义UI的过程非常简单,下面就使用UI编辑器来制作上节的实例。
(1)在Excel 2007中新建一个工作簿,保存为Test2.xlsm,退出Excel 2007。
(2)打开UI编辑器(Custom UI Editor)。
(3)单击菜单File|Open命令,在打开的对话框中选择test2.xlsm文件。
(4)单击【打开】按钮,在UI编辑器中打开工作簿test2.xlsm。此时,编辑器窗口仍然显示为空白,只是标题栏显示了工作簿的文件名。
打开文件 打开工作簿 (5)因为工作簿Test2.xlsm中还没有自定义RibbonX的代码,所以UI编辑器的编辑窗口里为空。在编辑窗口中输入以下XML代码,用来定义RibbonX,如图20-22所示。
%提示:UI编辑器不支持中文,因此需要将上节自定义RibbonX代码的中文改成英文。
输入XML代码 <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="rxtabTest" label="Test" >
<group id="myGroup" label="Display">
<button id="b1" imageMso="AccessTableEvents"
size="large" label="Worksheet Info"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
(6)单击工具栏中的Save按钮将内容保存到test2.xlsm文件中,然后关闭UI编辑器完成RibbonX的创建。
(7)打开工作簿test2.xlsm,可看到功能区新增加的选项卡。
自定义功能区 (8)在VBE中,编写过程showmsg用来显示当前工作表的信息。
[ 本帖最后由 dul 于 2009-7-1 23:17 编辑 ] |
|