前言
每次运行宏的时候都要打开Excel宏文件是很麻烦的事情,虽然可以把宏命令添加到快速访问工具栏,但是不能自定义图标和按钮文字,用起来也不方便。官方推荐用CustomUI标准进行配置,不过写XML文件太麻烦了。这里只考虑用CommandBar对象,以纯代码的方式向功能区添加宏命令。
xlam加载宏文件准备
一、新建一个工作簿,然后另存为xlam文件,把该文件加入到加载项里
添加好后,勾选前面的框框即可启用。xlam文件你可以理解为没有工作表的工作簿
二、打开wps宏编辑器,选择工作簿打开事件:Workbook_Open
打开该工作簿时就会触发Workbook_Open事件,执行相关代码
写好代码后不要忘记保存
相关代码演示效果
一、完整示例代码
Application.CommandBars代表容器应用程序中命令栏的 CommandBar 对象的集合
msoControlButton为MsoControlType 枚举,用于指定命令栏控件的类型。与 CommandBar.Controls 对象的 Add 方法一起使用。通过 CommandBars 对象模型只能创建一组有限的控件类型:msoControlButton、msoControlEdit、msoControlDropdown、msoControlComboBox、msoControlPopup 和 msoControlActiveX
//写好代码后,重启wps Excel即可看到功能区多了一个加载项的选项卡
function Workbook_Open() {
const arr = [
{
btn1: ['拆分工作表数据', 'splitSheet']
, btn2: ['选项', 'splitSheet_option']
}, {
btn1: ['合并Excel文件', 'mergeExcelFile']
, btn2: ['选项', 'mergeExcelFile_option']
}
]
//设置功能区
arr.forEach((obj) => {
let bar = Application.CommandBars.Add() //添加CommandBar对象
bar.Visible = true //设置CommandBar对象为可见
for (let i in obj) {
let btn = bar.Controls.Add(msoControlButton) //向CommandBar对象添加Button控件
btn.Caption = obj[i][0] //指定Button名称
btn.OnAction = obj[i][1] //指定要执行的函数
}
})
}
function splitSheet() {
alert('拆分工作表数据')
}
function splitSheet_option() {
alert('拆分工作表数据_选项')
}
function mergeExcelFile() {
alert('合并Excel文件')
}
function mergeExcelFile_option() {
alert('合并Excel文件_选项')
}