▌问题引入
昨天帮交流群群友解决了一个批量打印的问题,群友想让这段代码适用于所有打开的工作簿,每次在功能区点个按钮就能执行代码。
成品效果
而实现这个功能就是用Excel加载宏来实现的。
之前写VBA封装的时候,讲过加载宏,加载项他们之间的区别。简化为下图:(详细可以看我的dll封装学习笔记(一)和我的dll封装学习笔记(二))
我们这次做的就是Excel加载宏工作簿(xla或者xlam格式)。
▌解决过程
制作加载宏工作簿我们主要分为三个主要步骤:
1.修改我们已经写好的代码,以适用于加载宏工作簿。
2.将加载宏另存为xla或者xlam格式。
3.编写功能区XML代码,就是让功能区显示那个用于点击的按钮。
●步骤一:修改代码
因为要适配所有工作簿,所以不要出现具体工作表名字。默认操作的都是当前Sheet。
Sub test()Worksheets("表格1").Range("a1") = 1End Sub改成
Sub test()Range("a1") = 1End Sub
然后,我们还要实现,将sub过程关联到功能区的按钮,使得点击按钮,运行这个sub过程。我们又加了一句:control As IRibbonControl
Sub test(control As IRibbonControl)Range("a1") = 1EndSub
到此代码修改就可以了。
当然,必要的防错处理必须要有,比如不满足某个条件直接Exit Sub。这个不细说。
●步骤二:另存为xlam格式
这个没什么好说的,直接另存。需要注意的一点是,另存的时候,默认的路径是存储在加载宏工作簿路径下。
我们一般换个好找的地方,比如桌面,因为待会还要对他进行编辑。
●步骤三:设计XML代码,并压入xlam
工具:
①Custom UI Editor For Microsoft Office(获取方法,后台回复:功能区)
该工具用于压入功能区XML代码。具体XML代码怎么写,这个工具怎么使用,可以参看我原来的文章 《VBA小白也学得会的Robbion功能区》讲的很详细。
至此,加载宏就制作完成了。
▌关于加载
制作好加载宏了,怎么让所有的Excel都能适配这段代码呢?
有两种方式:
1.将做好的xlam加载宏文件放在自启动文件夹(去Office安装路径下找xlstart文件夹)
放在这个文件夹下,只要Excel启动,这个加载宏都会被加载出来。如果不想加载了,手动删除这个文件。
2.通过加载宏管理器加载
如果不想加载了,手动删除原本的文件。或者把去掉勾选这个加载宏。
推荐阅读:(点击下方标题即可跳转)Excel批量生成二维码插件重磅发布!
【Python+VBA】当蔡徐坤在Excel中打起了篮球!
Excel和Word数据交互读取(生成合同)
【答小白问】WPS到底能不能用VBA?
【收藏备用】工作簿(表)合并拆分那些事
【经验】快速学习VBA