<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="TabID" label="tabName" insertAfterMso="TabDeveloper">
<group id="GroupID" label="GroupName">
<button id="Button1" label="buttonname " size="large" onAction="Macro" imageMso="HappyFace"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
这是一个很简单的Ribbon customUI.xml代码,能实现的菜单如下:
制作自定义的Ribbon菜单,一般主要用到的就是上面3个东西。
当然我们关注的不是说主要用哪几个东西,而是Ribbon xml的编写格式,这个格式的文本如何转换为一个二维数组,然后输出到Excel表格:
输出到了Excel表格,才能在Excel里去编辑它。
编辑好之后,还要考虑如果将Excel表格上的内容,转换为Ribbon xml的编写格式,重新写入到Office文件中。
01
解析功能
元素:紧跟在『<』后面的customUI、ribbon、tabs、group、button,这些被称作xml的元素,xml这种语言没有限制元素的名称,但是Ribbon中还是有限制的,针对某个版本来说,肯定是固定的。
但是写一个程序,必须要考虑到以后,一旦Ribbon的xml语言升级更新了,支持的元素名称多了,程序还要保证能够正确运行,所以不能在程序里固定写死元素。
这样不管Ribbon的xml有什么更新,只要它是满足xml语言的编写规范,这个解析的功能都能够将相应的文本输出到Excel中去。
<…………>:一对括号内的内容,对应的也就是要输出到Excel单元格中的一行内容。
属性:括号内除去元素之外,剩下的都是xx="yy"这种形式的东西,这个称作元素的属性,xx是属性的名称,yy是属性的值。
对应的就是属性名称输出到Excel单元格的第一行,属性的值输出到元素所在行、属性所在列的单元格。
02
还原功能
还原功能就是将Excel单元格中的内容,转换为xml的文本。
HasChild这个属性并不是Ribbon的xml语言内容,是为了方便还原的时候,正确还原那些允许包含子控件的元素,这些元素的结束标记都是单独的,如例子中的:
</group>
</tab>
</tabs>
</ribbon>
</customUI>
而其他控件的格式是这样的<…………/>
这个还原功能应该就比较简单了,只要循环每一个行的内容:
xml语言的知识建议到网上找些资料先看看,了解一下。本人也基本没使用过xml语言,只是在自定义Excel Ribbon的时候用用,了解的也比较浅,个人觉得下面这个网站讲的还比较浅显易懂:
https://www.w3school.com.cn/xml/index.asp