小言_互联网的博客

VBA-将宏添加到选项卡(进阶版)

432人阅读  评论(0)

VBA-将宏添加到选项卡(进阶版)

缘起

之前分享了简易方法。应大家的需求,分享一个进阶的方法。这里说它是进阶,一是最后达到的效果可以做到更多元化,二是这样做出来的选项卡不会被轻易初始化,三是操作起来略复杂,涉及了Office选项卡实现原理,Office文件的储存原理还有回调函数等。

方法

  1. 首先,新建一个xlsm格式的文件,这里我们一起新建全名叫TestFunc.xlsm的文件
  2. 在这个文件的VBE中插入模块。出于演示目的,我们就简单地写一个叫做OwnFunc的sub——大家在自己做的时候可以用自己的代码替换MsgBox (“Mscro worked.”)
Sub OwnFunc(control As IRibbonControl)
    MsgBox ("Mscro worked.")
End Sub
  1. 保存关闭后,用重命名的方式将文件改为.zip文件,变成TestFunc.zip
    Office文件从2007版开始本质上就是一个压缩包,并且是采用xml储存数据及设置,感兴趣的朋友可以了解一下xml文件和新型Office文件的储存原理。
  2. 打开压缩包后,在其中添加一个名为“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>
  1. 最后,你的压缩包应该长这个样子

    保存在压缩包做的修改,然后将文件名改回TestFunc.xlsm。打开文件,点击多出来的那个笑脸,OwnFunc里设定的程序就运行起来了。

关于插件制作

这样的六步走下来,一个进阶版的选项卡就可以设置好了。另外文中提及的是制作自定义的xlsm文件,如果想做成插件,操作是一样的,只是操作的文件要另存为xlam,之后在别的机器上使用时需要做的就是将定义好的插件xlam文件导入就可以。关于ImageMSO,我从网络上找到一个大全,老规矩放在了下载模块,名字叫Office2007IconsGallery;同时也在公众号上提供百度云下载链接。

公众号

刚刚开通公众号,名叫柚点技巧,感兴趣的朋友可以添加关注,方便交流。另外相关文件也可以在公众号回复关键字直接下载。


转载:https://blog.csdn.net/ahxdyz/article/details/102477376
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场