Microsoft Excel 2010自定义功能区:修改XML¶
发布于:2017-07-24 | 分类:process automation
手工创建自定义Excel选项卡的方法在可移植性方面存在不足,本文将以前文的hello_world.xlam为基础,记录将自定义功能区的菜单项集成到插件中去的基本步骤。
创建自定义功能区的xml文件¶
自定义功能区的选项卡、分组、菜单项可以使用xml格式文件的tab,group,button等标签来组织,其中常用的属性有:
-
label属性为显示的名称 -
onAction属性为相应的回调函数,例如btn1对应的函数为user_fun -
imageMso属性控制菜单项的显示图标 1
以下是本文简单示例的xml结构:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="userRibbon" label="自定义Ribbon选项卡">
<group id="g1" label="自定义组一">
<button id="btn1"
imageMso="Alerts"
size="large"
label="say hello world"
onAction="user_fun"/>
</group>
<group id="g2" label="自定义组二">
<button id="btn2"
imageMso="Help"
size="large"
label="About"
onAction="about_fun"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
关于自定义功能区的xml文件的具体说明,可以参考微软提供的文档 2 3 4 5。
大致了解以上背景知识后,正式开始操作步骤:
-
新建
customUI文件夹,在该文件夹下新建CustomUI.xml文件,文件内容为以上示例xml代码。注意保存以UTF-8编码保存文件。 -
以解压缩软件例如
7-zip直接打开hello_world.xlam,然后将整个customUI文件夹拖入到压缩文件中并保存。

修改.res文件¶
接下来继续在以压缩包形式打开的hello_world.xlam文件上进行操作:
-
右键压缩包中
_res文件夹下的.res文件,在弹出菜单中选择编辑,以记事本方式打开.res文件。 -
在
.rels文件最后一个</Relationships>标签之前添加如下内容,保存并在提示更新压缩文件时选择确定。
<Relationship Id="customUIRelID"
Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
Target="customUI/customUI.xml"/>
完成以上步骤后打开hello_world.xlam得到如下效果:

编辑VBA代码¶
xml中为say hello world指定的回调函数是user_fun,所以最后完成该子过程即可。新建模块(module)重命名为user_function,在其中写入以下代码:
Sub user_fun(Control As IRibbonControl)
MsgBox "Hello world."
End Sub
特别注意,该过程需要带参数control As IRibbon。
最后,本文示例文件hello_world_addin.xlam供参考。