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

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://img-blog.csdnimg.cn/20190922125259147.jpg

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值