在写之前我们先来了解写excel文件的结构;我们选择用360压缩打开excel文件;发现它可以打开(说明excel其实就是一个压缩文件);今天我们要做的就是在excel文件里面添加自定义选项UI文件和文件夹;
首先我们要准备一个customUI文件夹,在customUI文件夹里面添加一个_rels文件夹和images文件夹和一个customUI.xml文件;在文件夹里面建一个customUI.xml.rels文件;在images文件夹里面添加需要用的图标;文件结构见下图;
customUI.xml.rels文件内容:用于添加图标路径
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<!--图标1-->
<Relationship Target="images/img_vbxymA.jpg" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="img_vbxymA_JPG"/>
<!--图标2-->
<Relationship Target="images/img_vbxymB.jpg" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="img_vbxymB_JPG"/>
<!--图标2-->
<Relationship Target="images/img_vbxymC.jpg" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="img_vbxymC_JPG"/>
</Relationships>
customUI.xml用于添加菜单栏按钮,和自定义选项卡的内容(上面已经有相关注释)
<?xml version="1.0"?>
<!--RibbonX Visual Designer 1.93 for Microsoft Excel 12.0. XML Code produced on 2014/07/08-->
<!--更多精彩内容,请移步微信公众号:VB小源码-->
<!--更多教程文件下载请加QQ群;关注微信公众号获取群号!-->
<!--onLoad:初始化时要运行的宏; 程序事件示例:Public Sub vb_cs(Ribbon As IRibbonUI)''代码内容 End sub -->
-<customUI onLoad="vb_cs" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
-<ribbon startFromScratch="false">
<!--菜单集合-->
-<tabs>
<!--菜单表信息 id:随意填写(注意不能重复)insertBeforeMso:添加菜单位置(默认tabhome)label:菜单名称 -->
-<tab label="VB小源码Addin菜单示例" insertBeforeMso="TabHome" id="tab_vbxym">
<!--下面为菜单组列表-->
<!--菜单组1信息 id:随意填写(注意不能重复)label:组名称 -->
-<group label="菜单组示例1" id="gr_menu_A">
<!--按钮信息-->
<!--ID:随意填写(注意不能重复)imageMso:内内置图标 label:按钮名称 size:按钮大小 onAction:触发的宏程序程序事件示例:Public Sub vb_bt_A(Control As IRibbonControl)MsgBox "测试按钮1"End Sub -->
<button label="测试按钮1" id="bt_test_A" onAction="vb_bt_A" size="large" imageMso="DataFormAddRecord"/>
<!--分割线-->
<separator id="split_A"/>
<!--按钮信息-->
<button label="测试按钮2" id="bt_test_B" onAction="vb_bt_B" size="large" imageMso="MailMergeRecipientsEditList"/>
</group>
<!--菜单组2信息 id:随意填写(注意不能重复)label:组名称 -->
-<group label="菜单组示例2" id="gr_menu_B">
<!--按钮信息-->
<button label="测试按钮3" id="bt_test_C" onAction="vb_bt_C" size="large" imageMso="CreateReport"/>
<!--分割线-->
<separator id="split_B"/>
<!--按钮信息-->
<button label="测试按钮4" id="bt_test_D" onAction="vb_bt_D" size="large" imageMso="ReviewCompareMenu"/>
</group>
-<group label="菜单组示例3" id="gr_menu_C">
<!--gallery程序实例:Public Sub bt_gal_A(control As IRibbonControl, id As String, index As Integer)MsgBox "展示测试按钮"End Subcolumns:列数 id:随意填写(注意不能重复)itemHeight:项高度 itemWidth:项宽度 onAction:运行的宏 rows:最大行数 -->
-<gallery label="展示按钮测试1" id="gal_A" onAction="bt_gal_A" rows="500" itemWidth="32" itemHeight="32" columns="4">
<item label="图标1" id="item_A" imageMso="_3DBevelOptionsDialog"/>
<item label="图标2" id="item_B" imageMso="_3DBevelPictureTopGallery"/>
<item label="图标3" id="item_C" imageMso="_3DDirectionGalleryClassic"/>
<item label="图标4" id="item_D" imageMso="_3DEffectColorPickerClassic"/>
<item label="图标5" id="item_E" imageMso="_3DEffectColorPickerMoreClassic"/>
<item label="图标6" id="item_F" imageMso="_3DEffectsGalleryClassic"/>
</gallery>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
然后把customUI文件夹,用360压缩打开然后复制到excel文件里面去
最后修改excel文件里面的自带_rels文件夹里面的.rels文件(用于添加customUI文件路径)
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
-<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<!--默认值建议不要修改-->
<Relationship Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Id="rId3"/>
<!--默认值建议不要修改-->
<Relationship Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Id="rId2"/>
<!--默认值建议不要修改-->
<Relationship Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Id="rId1"/>
<!--新增的内容:VBA菜单栏的UI文件路径(有需要直接复制即可)-->
<Relationship Target="customUI/customUI.xml" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Id="cuID"/>
</Relationships>
vba代码:
''微信公众号:VB小源码
Public Sub vb_cs(Ribbon As IRibbonUI)
MsgBox "VB小源码!欢迎使用本教程!"
''添加你的过程如: call test
End Sub
Public Sub vb_bt_A(control As IRibbonControl)
MsgBox "测试按钮1"
''添加你的过程如: call test
End Sub
Public Sub vb_bt_B(control As IRibbonControl)
MsgBox "测试按钮2"
''添加你的过程如: call test
End Sub
Public Sub vb_bt_C(control As IRibbonControl)
MsgBox "测试按钮3"
''添加你的过程如: call test
End Sub
Public Sub vb_bt_D(control As IRibbonControl)
MsgBox "测试按钮4"
''添加你的过程如: call test
End Sub
Public Sub bt_gal_A(control As IRibbonControl, id As String, index As Integer)
'MsgBox "展示测试按钮"
''添加你的过程如: call test
If id = "item_A" Then MsgBox "图标1"
If id = "item_B" Then MsgBox "图标2"
If id = "item_C" Then MsgBox "图标3"
If id = "item_D" Then MsgBox "图标4"
If id = "item_E" Then MsgBox "图标5"
If id = "item_F" Then MsgBox "图标6"
End Sub
文件地址(直接修改加到excel文件即可)
https://www.lanzous.com/i4kzjcf
谢谢关注与支持!!