这篇文章秉承拿来主义思想,学会复制粘贴使用即可,不做理论上的讲解,想深入学习的同学自行百度Ribbon,XML相关知识。
这篇文章主要介绍一下怎样给office菜单功能添加自定义的功能。在起名字的时候纠结了一下,本想直接写成《Microsoft Ribbon菜单功能区添加自定功能》,怕大家看到E问头皮发麻,就写了个很土但是能看懂的名字。
一、准备工作
几篇参考文档:
1.Customizing the 2007 Office Fluent Ribbon for Developers https://docs.microsoft.com/zh-cn/previous-versions/office/developer/office-2007/aa338199(v=office.12)
2.VSTO二次开发PowerPoint之:XML方式创建Ribbon并自定义图标https://blog.51cto.com/yangfandev/1404925
office功能区添加自定义功能实质上是通XML添加的,这里推荐一个工具方便编辑修改XML文件。
OfficeCustomUIEditorSetup(2010支持中文编辑).rar
OfficeidMsoViewer,本工具用于查看Office内置控件的idMso属性。
OfficeidMsoViewer.zip
二、开始动工
1.启动Excel文件,新建一个Excel文件,另存为xlsm格式,关闭Excel。查看图示
2.启动Custom UI Editor For Microsoft Office软件,打开刚才保存的Excel文件。查看图示
3.依次点击Inset-Sample XML-Excel-A Custom Tab。查图示
最终效果
4.保存,双击打开Excel文件查看效果。查看图示
三、解释
在XML中:
id相当于给每个模块定义的名称,必须唯一不能重复。
label是相应空间在tab上显示的名称。
size控件打开,可以是large和small。
onAction控件点击后执行的事件名称。
1.固定格式部分,用于声明,使用过程中不用修改。
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
</ribbon>
</customUI>
2.Excel上面整个功能区都属于tabs,是tab的集合。开始、插入、页面布局...这些都属于tab。
<tabs>
<tab id="customTab" label="Contoso" insertAfterMso="TabHome">
</tab>
</tabs>
3.实例中我们插入了一个tab,叫Contoso,在开始tab后面。
<tab id="customTab" label="Contoso" insertAfterMso="TabHome">
</tab>
4.插入6组功能,也就是6个group。其中id为customGroup之中加入了3个按钮。由于版本兼容性问题6个group之中只显示了前3。
<group idMso="GroupClipboard" />
<group idMso="GroupFont" />
<group id="customGroup" label="Contoso Tools">
<button id="customButton1" label="ConBold" size="large" onAction="conBoldSub" imageMso="Bold" />
<button id="customButton2" label="ConItalic" size="large" onAction="conItalicSub" imageMso="Italic" />
<button id="customButton3" label="ConUnderline" size="large" onAction="conUnderlineSub" imageMso="Underline" />
</group>
<group idMso="GroupEnterDataAlignment" />
<group idMso="GroupEnterDataNumber" />
<group idMso="GroupQuickFormatting" />
还不快抢沙发