RibbonX和VBA  
[分享]RibbonX和VBA
本文整理自《Excel 2007 VBA Programmer’s Reference》一书的第14章:RibbonX,也是该书在网上公开的内容,详细讲述了使用VBA如何设置和操作Ribbon。该书的目录和示例章节请见下面的链接:uk/Excel2007ProgRef/default.htm。由于对Excel2007的熟悉程度和英文水平有限,可能有很多错漏之处,敬请批评指正。
后记:断断续续的抽了一些空余时间,终于将本章内容全部译完了,也使自已对Ribbon开发有了更进一步的认识。但是,由于对Excel 2007认识有限,再加上时间和水平方面的原因,也来不及仔细研磨,匆匆将该章初译稿奉上,以供大家学习参考。对其中的不通顺之处和错漏的地方,请大家多包涵,也请大家批评指正。
RibbonX和VBA
分类:Excel 2007>>Ribbon
Office 2007最大的改变之一是Ribbon(功能区)。在Ribbon设计之初,Microsoft意识到必须有
一种方式能够为开发者和(某范围的)最终用户来定制Ribbon。这导致了RibbonX,即Ribbon的可编程机制。下面的内容介绍了RibbonX,并解释了如何定制Ribbon。
概述
在以前版本的Office中,可以通过使用VBA操作组成CommandBars对象模型的对象来创建菜单和工具栏,这对一个有实际意义的应用程序来说,经常需要成百甚至上千行VBA代码来维护添加、移除、或重新整理菜单。有时,最好的方式是使用表驱动的方式来创建菜单,即通过填充在工作表中的表来定义菜单和工具栏,一个可重复使用的VBA过程来解释表以创建菜单和工具栏。即使在使用表驱动方式,仍然需要相当多的VBA代码以确保仅当工作表被激活时特定的菜单是可见的,并且在关闭工作簿时必须相当小心地移除定制的菜单。
当为Ribbon设计可编程模型时,Microsoft以目前最好的实践开始,识别了已存在的不利点并移除了它们,也对关键客户和其它有兴趣的团体进行了调查,听取了所有反映的问题并修改了RibbonX设计去解决所碰到的多数问题,结果是一个完全新的范例:
(1) 定制在设计时就被定义,而不是单独的编码。使用XML进行定义并在XML文件格式中存储作为一个自定义部分,而不是使用工作表中的表。
(2) 当打开工作簿时,Excel自动读取XML部分并应用定制到Ribbon中。
(3) 如果使用一个标准工作簿,它的Ribbon定制仅当该工作簿激活时被应用并可见。
(4) 如果使用一个加载项工作簿,它的Ribbon定制总被应用并可用。
(5) 无论何时关闭工作簿,它的Ribbon定制都会自动删除。
(6) 即使定制在设计时被定义,大多数控件的属性可以使用VBA在运行时修改(诸如可见、标签,等等)
(7) 一些控件可以是完全动态的——因此,它们的结构和属性可以使用VBA在运行时定义。
(8) 所有内置的控件都是可用的,能够被重载、执行和查询它们的图像、标题,等等。
资料库lhome
博客网lperfect
准备工作
如果您想花些时间研究RibbonX,那么有一些关键的工具需要下载并需要知道一些网站:
(1) 正式的RibbonX站点是msdn.microsoft/office/tool/ribbon
(2) Office 2007自定义UI编辑器可从下面链接下载:
/articles/CustomUIeditor.aspx
(或lhome/user1/fanjy/archives/2007/841.html)至上励合资料
(3) 在MSDN站点上有两个有价值的文件可以利用。第一个文件包含Excel所有内置的选项卡、组和控件的名称列表;第二个文件是一个Excel加载项,添加了一个所有可用的内置图像库,能够用于自定义的控件中。
(4) 如果您想了解RibbonX的实质,MSDN中的customui.xsd架构是可用的。这是正式的架构,用于使您的定制生效,确切地描述了哪个控件具有什么属性和内容。
(5) 为了告知您的RibbonX XML中的任何错误,应选中“Office按钮>>Excel选项>>高级>>显示加载项用户接口错误”前的复选框。
添加定制
添加RibbonX定制到工作簿中只需两个步骤:
1、创建XML文件来定义所需要的定制。
2、插入该XML文件到工作簿文件中(必须使用XML文件格式之一)。
第一步是本文剩下的部分所要讲述的主题。您可以通过手工或编程来添加XML部分,需要进行下面的操作:
1、添加XML文件到工作簿压缩结构中。通过协定,它有名称/l,虽
然可以使用任何其它的名称。最好将XML部分放在它自身的文件夹中,因为也需要在这里存储按钮图像。
2、编辑根文件rels以包括对新的XML部分的引用,诸如:
(1) <Relationship Type=”schemas.microsoft/office/2006/relationships/ui/extensibility” Target=”/l” Id=”rID5” />
(2) 最重要的是relationship的Type属性,因为这是Excel判断是否relationship为一个RibbonX定制。注意,因为是XML,区分大小写,所以正确的大小写拼写是相当重要的。
这些变化很容易通过Office 2007自定义UI编辑器实用程序来实现,可从下面的链接下载:
/articles/CustomUIeditor.aspx
(或lhome/user1/fanjy/archives/2007/841.html)