缘起
之前分享了简易方法。应大家的需求,分享一个进阶的方法。这里说它是进阶,一是最后达到的效果可以做到更多元化,二是这样做出来的选项卡不会被轻易初始化,三是操作起来略复杂,涉及了Office选项卡实现原理,Office文件的储存原理还有回调函数等。
方法
- 首先,新建一个xlsm格式的文件,这里我们一起新建全名叫TestFunc.xlsm的文件
- 在这个文件的VBE中插入模块。出于演示目的,我们就简单地写一个叫做OwnFunc的sub——大家在自己做的时候可以用自己的代码替换MsgBox (“Mscro worked.”)
Sub OwnFunc(control As IRibbonControl)
MsgBox ("Mscro worked.")
End Sub
- 保存关闭后,用重命名的方式将文件改为.zip文件,变成TestFunc.zip
Office文件从2007版开始本质上就是一个压缩包,并且是采用xml储存数据及设置,感兴趣的朋友可以了解一下xml文件和新型Office文件的储存原理。 - 打开压缩包后,在其中添加一个名为“customUI”的文件夹,并且在这个文件夹里面存入一个叫做“customUI.xml”的UTF-8编码的xml文件,此文件中应该有以下内容
这些内容的作用就是规定自定义添加的选项卡以及其中的组别、按钮等,不过可以调整的属性比简易版方法更多(如size等)
<?xml version="1.0"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="rxtabCustom" label="Audit" insertBeforeMso="TabHome">
<group id="mygroupB" label="Macro Func">
<button id="ButtonID" imageMso="HappyFace" size="large" label="Func" onAction="OwnFunc"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
而且这里可以添加的控件的种类也很多,这里只是用button为例子,更多的种类可以参考下图:
5. 和刚刚添加的customUI文件夹同级有一个名为“_rels”的文件夹,进入此文件夹,打开“.rels”文件,在最后一个“<Relationship”字段前添加:
<Relationship Id="customUIRelID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"></Relationship>
- 最后,你的压缩包应该长这个样子
保存在压缩包做的修改,然后将文件名改回TestFunc.xlsm。打开文件,点击多出来的那个笑脸,OwnFunc里设定的程序就运行起来了。
关于插件制作
这样的六步走下来,一个进阶版的选项卡就可以设置好了。另外文中提及的是制作自定义的xlsm文件,如果想做成插件,操作是一样的,只是操作的文件要另存为xlam,之后在别的机器上使用时需要做的就是将定义好的插件xlam文件导入就可以。关于ImageMSO,我从网络上找到一个大全,老规矩放在了下载模块,名字叫Office2007IconsGallery;同时也在公众号上提供百度云下载链接。
公众号
刚刚开通公众号,名叫柚点技巧,感兴趣的朋友可以添加关注,方便交流。另外相关文件也可以在公众号回复关键字直接下载。
转载:https://blog.csdn.net/ahxdyz/article/details/102477376
查看评论