MicroOffice Excel可以在“自定义功能区”菜单中,可以直接添加“宏”。但是WPS Excel的“自定义功能区”设置菜单不支持“宏”的添加。
想要的效果图是下图样式:自定义功能标签“我的菜单”,并在其下有自定义的功能按钮。
下面记录WPS Excel的实现过程。
1、新建“自定义功能区.xlsx”文件,并录制两个宏依次用来给A1单元格标记黄色和标记无色。并将文件另存为启用宏的xlsm格式,即,“自定义功能区.xlsm”
查看宏代码如下:
2、在电脑上新建 一个文件夹“mUI”,
在mUI内新建两个文件夹“_rels"、"images" 和 一个文本文件 “mUI.xml”
mUI.xml 内填入如下内容
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="mUI" label="我的菜单">
<group id="Group1" >
<button id="Button1" label="标记" image="image-01" size="large" onAction="标记A1"/>
</group>
<group id="Group2" >
<button id="Button2" label="擦除" image="image-02" size="large" onAction="擦除A1"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
将图标图片 image01 和 image02 放入images文件夹内。
在"_rels"文件夹中新建文本文档“mUI.xml.rels”,并填入如下内容
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="image-01" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/image01.png"/>
<Relationship Id="image-02" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="images/image02.png"/>
</Relationships>
3、用压缩软件打开“自定义功能区.xlsm”文件,打开方式里不提示压缩软件的,可以通过“选择其他应用”查找到压缩软件。
在此处添加上一步准备的“mUI”文件夹
将“_rels”文件夹下的".rels"文件添加如下内容(有的压缩软件不支持编辑,可以拖出编辑文件,后在添加覆盖原文件)
<Relationship Id="mUIRelID" Type="http://schemas.microsoft.com/office/2007/relationships/ui/extensibility" Target="mUI/mUI.xml"/>
此时打开“自定义功能区.xlsm”文件,界面效果已经实现了
但是宏的功能还没有实现。
这里困惑了很长时间,就差一步了。是需要把宏标记为“control As IRibbonControl”,如下:
Sub 标记A1(control As IRibbonControl)
'
' 标记A1 Macro
' 宏由 LiuZW 录制,时间: 2023/04/09
' 功能:将A1单元格标记为黄色
'
Range("A1").Select
With Selection.Interior
.Pattern = xlPatternSolid
.Color = 65535
.TintAndShade = 0
.PatternColorIndex = -4105
End With
End Sub
Sub 擦除A1(control As IRibbonControl)
'
' 擦除A1 Macro
' 宏由 LiuZW 录制,时间: 2023/04/09
' 功能:将A1单元格标记为无色
'
Range("A1").Select
Selection.Interior.Pattern = xlPatternNone
End Sub
此时,两个功能按钮的功能实现了。也就是Button的OnAction属性生效了。
示例文件:自定义功能区.xlsm