您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > Excel RibbonX VBA
RibbonX和VBA[分享]RibbonX和VBA本文整理自《Excel2007VBAProgrammer’sReference》一书的第14章:RibbonX,也是该书在网上公开的内容,详细讲述了使用VBA如何设置和操作Ribbon。该书的目录和示例章节请见下面的链接:。由于对Excel2007的熟悉程度和英文水平有限,可能有很多错漏之处,敬请批评指正。后记:断断续续的抽了一些空余时间,终于将本章内容全部译完了,也使自已对Ribbon开发有了更进一步的认识。但是,由于对Excel2007认识有限,再加上时间和水平方面的原因,也来不及仔细研磨,匆匆将该章初译稿奉上,以供大家学习参考。对其中的不通顺之处和错漏的地方,请大家多包涵,也请大家批评指正。RibbonX和VBA分类:Excel2007RibbonOffice2007最大的改变之一是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)所有内置的控件都是可用的,能够被重载、执行和查询它们的图像、标题,等等。资料库准备工作如果您想花些时间研究RibbonX,那么有一些关键的工具需要下载并需要知道一些网站:(1)正式的RibbonX站点是。(2)Office2007自定义UI编辑器可从下面链接下载:。(或)(3)在MSDN站点上有两个有价值的文件可以利用。第一个文件包含Excel所有内置的选项卡、组和控件的名称列表;第二个文件是一个Excel加载项,添加了一个所有可用的内置图像库,能够用于自定义的控件中。(4)如果您想了解RibbonX的实质,MSDN中的customui.xsd架构是可用的。这是正式的架构,用于使您的定制生效,确切地描述了哪个控件具有什么属性和内容。(5)为了告知您的RibbonXXML中的任何错误,应选中“Office按钮Excel选项高级显示加载项用户接口错误”前的复选框。添加定制添加RibbonX定制到工作簿中只需两个步骤:1、创建XML文件来定义所需要的定制。2、插入该XML文件到工作簿文件中(必须使用XML文件格式之一)。第一步是本文剩下的部分所要讲述的主题。您可以通过手工或编程来添加XML部分,需要进行下面的操作:1、添加XML文件到工作簿压缩结构中。通过协定,它有名称/customUI/customUI.xml,虽然可以使用任何其它的名称。最好将XML部分放在它自身的文件夹中,因为也需要在这里存储按钮图像。2、编辑根文件rels以包括对新的XML部分的引用,诸如:(1)RelationshipType=””Target=”/customUI/customUI.xml”Id=”rID5”/(2)最重要的是relationship的Type属性,因为这是Excel判断是否relationship为一个RibbonX定制。注意,因为是XML,区分大小写,所以正确的大小写拼写是相当重要的。这些变化很容易通过Office2007自定义UI编辑器实用程序来实现,可从下面的链接下载:。(或)XML结构Ribbon主要的关键之一是所有的控件都根据相关的功能分成组,因此,文本格式的控件在“开始”选项卡的“字体”组中,公式审核工具全部位于“公式”选项卡中的“公式审核”组中。从功能角度看,这是合乎逻辑的,但从过程角度看Ribbon则完全不合逻辑。例如,Excel用户通常会被要求去查看他人创建的工作簿,此时,面对着这样的问题:大多数人以他们自已的方式处理文件、跟踪公式、检查定义的名称、对单元格应用不同的格式、添加评论、有规律地在原始工作簿和副本之间切换。不巧的是,这些操作中的每一个都涉及到Ribbon中的不同的选项卡。在先前版本的Excel中,可以通过创建自定义工具栏并在其中添加所需要的按钮使所有这些操作组合在一起。当完成工作簿审核后,您能关闭工具栏直到下次去查看其他人的文件。在Office2007中,自定义工具栏的概念已被停止使用,取而代之的是,定义一些RibbonXXML创建包含为审核所需要的所有内置组和/或控件的自定义选项卡,然后添加XML到另外的空白加载项工作簿中。现在,当您被要求去审核工作簿时,可以装载这个审核加载项,这时所有您需要的控件都在工作簿中方便的位置。当您完成工作后,可以卸载该加载项以移除自定义选项卡。这些都不需要VBA。首先,创建一个新工作簿,在工作簿中单击“Office按钮准备属性”命令,添加“标题”和“备注”(显示在加载项对话框中),然后保存为Auditing.xlam(在“另存为”对话框中使用“Excel加载宏”文件类型)。然后,打开Office2007自定义UI编辑器,在该编辑器中打开Auditing.xlam文件,输入下面的XML代码,单击“保存”添加XML到文件中。注意,XML文件中的代码区分大小写,因此要正确的拼写大小写。customUIxmlns==rxAuditinglabel=Auditinggroupid=rxAuditMisclabel=MiscellaneouscontrolidMso=Copy/controlidMso=PasteMenu/separatorid=rxAuditMiscSeparator1/controlidMso=NameManager/controlidMso=ViewFreezePanesGallery/controlidMso=WindowSwitchWindowsMenuExcel//groupgroupidMso=GroupFormulaAuditing/groupidMso=GroupFont/groupidMso=GroupNumber//tab/tabs/ribbon/customUI返回到Excel中,打开加载项对话框(“Office按钮Excel选项加载项管理:Excel加载项转到…”),然后装载Auditing.xlam加载项。单击该对话框中的“确定”按钮后,可以在Ribbon中看到添加了一个名为Auditing选项卡,包含了在XML中定义的组和控件,如下图1所示。图1下面介绍XML定义的每一行以及与Ribbon改变的结果相联系的部分。customUI元素是XML的根容器,名称集(namespace)将它识别作为RibbonX文档。ribbon元素是一个联系到可见的Ribbon的所有变化的容器。customUI元素也可以包含一个commands元素,用来重复利用内置控件(见本文后面的介绍)。tabs元系是一个联系到Ribbon中现有的或新的选项卡的所有变化的容器。ribbon元素也能包含officeMenu、qat和/或contextualTabs元素来控制Ribbon的相应部分。注意,不能有miniToolbar或statusBar元素,这些元素超出了RibbonX的范围。tabid=”rxAuditing”label=”Auditing”元素是真正定制的开始,创建了自定义的选项卡。包含在定制中的每项都必须至少有一个ID,有三种类型的ID属性:id、idMso和idQ,分别指定自定义项、内置项、或与多个文件共享的项。在本例中,由于是创建一个自定义选项卡,因此使用id属性并给它一个唯一的名称。为所有的自定义项使用标准的前缀是一个好的做法,这容易使它们与内置的名称相区别。我习惯使用rx表示这是一个RibbonX项,当在VBA中引用它时,也有助于进一步与其它类型的控件相区别。groupid=”rxAuditMisc”label=”Miscellaneous”元素创建第一组并打开其中的内容的定义,显示在选项卡中的组与它们在RibbonX文件中定义的顺序相同,每列显示三行,然后再从新列开始显示。controlidMso=”Copy”/元素添加内置的“复制”按钮到自定义组中。普通的control元素类型可以为所有内置控件使用而不管它们实际的类型,idMsoID类型提供了实际控件名称。就像先前所提到的,所有Excel的控件名都列于ExcelRibbonConrtols.xls文件中,可从MSDN下载。controlidMso=”PasteMenu”/元素添加了标准的“粘贴”按钮和下拉菜单。separatorid=”rxAuditMiscSeparator1”/元素在该组中添加一条垂直分隔线并开始第二列控件。注意,即使它为一个不进行任何操作的可视元素,仍须有一个独立的自定义ID。紧接着在自定义组中添加了内置的名称管理器、冻结窗格和切换窗口控件三个元素。/group结束了第一组的定义。groupidMso=”GroupFormulaAuditing”/元素在自定义选项卡中添加了整个内置的公式审核组,使用了idMso
本文标题:Excel RibbonX VBA
链接地址:https://www.777doc.com/doc-5198373 .html