目录
- [零. 前期准备](#零. 前期准备)
-
- [0.1 需求](#0.1 需求)
- [0.2 环境](#0.2 环境)
- [一. 自定义全局可用选项卡](#一. 自定义全局可用选项卡)
- [二. 仅单文件可用的自定义选项卡](#二. 仅单文件可用的自定义选项卡)
- [三. 自定义选项卡插件](#三. 自定义选项卡插件)
零. 前期准备
0.1 需求
🔷在Excel中添加一个自定义的选项卡,在选项卡中添加一些自定义功能。

0.2 环境
- 最低的Excel版本为2016
office-ribbonx-editor:用于编辑选项卡的样式,微软官方并没有提供编辑器,此处使用第三方编辑器。- imageMso图标检索网站
- office组件内置了很多图标,通过下面的网站可以获取图标名称
- https://ymrt.jp/imagemso/index.html
- 自定义加载项会用宏功能,因此制作加载项的文件需要保存为
.xlsm:Excel启用宏的工作簿- 或
.xlam:Excel加载宏
- 开启Excel宏功能
- 有的Excel的默认宏功能是禁止的,需要通过下图所示的步骤开启
禁用所有宏,并发出通知:会告知当前Excel的宏已经被禁用,点击允许之后即可使用宏功能

一. 自定义全局可用选项卡
- 创建一个
.xlsm格式的Excel文件,然后在VBA工程中插入一个模块之后,粘贴下面的测试代码。

vbnet
Sub Show_Msg()
MsgBox "自定义消息!", vbInformation
End Sub
- 然后如下图所示,添加自定义选项卡之后,将自定义的宏添加到对应的选项卡的组中

- 添加宏完成之后,可点击重命名修改默认宏按钮的图标

🔷最终效果如下:

🔷需要注意的是
- 这种方式添加的选项卡作用于整个Excel,打开其他Excel文件也可以使用。
- 该自定义选项卡的存在依赖于原宏文件,如果宏文件被删除或移动,则选项卡不可用。
- 因此原宏Excel需要放到固定的地方,不可随便移动。

二. 仅单文件可用的自定义选项卡
🔷要求:
.xlsm文件Ribbon XML对选项卡的UI进行编辑- 自定义编辑
- 将
.xlsm文件的后缀改为.zip,解压之后响应的文件编辑。 - 较为繁琐,容易出错。
- 将
- 👍使用
Office RibbonX Editor进行编辑👍
- 自定义编辑
🔷同样需要插入一个模块,然后编写对应的vba代码

- 需要注意的是,由于宏需要从选项卡触发,所以需要添加
control As IRibbonControl的参数,否则无法触发。
vbnet
Sub Show_Msg(control As IRibbonControl)
MsgBox "自定义消息!", vbInformation
End Sub
🔷然后使用Office RibbonX Editor打开.xlsm文件,然后插入Office 2010+的UI

- 然后向其中粘贴下面的UI代码
- imageMso:图标
- onAction:要触发的宏过程的名称
xml
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="MyTab" label="小工具">
<group id="MyGroup" label="分组1">
<button id="btn1"
label="消息弹窗"
size="large"
imageMso="AcceptInvitation"
onAction="Show_Msg"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
🔷保存之后,再次打开Excel就可以使用自定义的选项卡了
- 这种方式添加的选项卡只能在当前的文件可用,其他Excel文件不可用。

三. 自定义选项卡插件
🔷如果我们需要将自自定义的选项卡中的功能也分发被别人使用的话,那么需要创建一个.xlam文件,其他人将该文件添加到Excel的加载项中之后,就可以使用我们自定义的选项卡了。
- 将
二. 仅单文件可用的自定义选项卡中创建的.xlsm文件另存为.xlam文件

- 然后将
.xlam文件复制到C:\Users\当前用户名\AppData\Roaming\Microsoft\AddIns路径中

🔷然后如下图所示,在【加载项】→【Excel 加载项】中找到自定义的.xlam文件名称,勾选后即可全局加载自定义选项卡。
