JS宏添加工具栏自定义多级下拉菜单,快速执行程序

懒人办公
懒人办公

创作者俱乐部成员

【运行效果】

我们看到在工具栏出现了一个“加载项”选项卡,里面有一个“懒人工具”菜单,该菜单下还有二级和三级菜单。话不多说,直接看效果:

【JSA代码】

按ALT+F11打开WPS宏编辑器,复制下方代码粘贴到编辑器中。

👉

//以下为工作表打开事件,打开表格时运行代码

function Application_WorkbookOpen(wk){

ar = ["表格合并", "表格拆分"] //定义数组ar存放三级菜单

br = ["报表生成", "批量提取","批量命名"] //定义数据br存放二级菜单

try{CommandBars("新菜单").Delete()}catch{}; //删除菜单,没有菜单时会出错,故忽略错误

var Menu = CommandBars.Add("新菜单"); //添加新菜单

Menu.Visible=true //新菜单可见

//添加一级菜单,命名为“懒人工具”,msoControlPopup表示可以继续添加下一级

Menu.Controls.Add(msoControlPopup).Caption = "懒人工具"

//添加二级菜单,msoControlPopup表示可以继续添加下一级

var cb=CommandBars("新菜单").Controls(1).Control.Controls.Add(msoControlPopup)

cb.Caption="合并拆分" //设置二级菜单名称为“合并拆分”

ar.forEach(a=>{ //遍历数组ar,每个元素用a表示

var cb1=cb.Control.Controls.Add() //添加三级菜单

cb1.Caption=a //设置三级菜单名称

cb1.Tag=a //设置三级菜单标签名称,以便点作为test的返回值

cb1.OnAction = "test" //添加动作,即函数名称

})

br.forEach(b=>{ //遍历数组br,每个元素用b表示

//添加二级菜单,无第三级,可不用msoControlPopup

var cb2=CommandBars("新菜单").Controls(1).Control.Controls.Add()

cb2.Caption=b //设置二级菜单名称

cb2.Tag=b //设置三级菜单标签名称,以便点作为test的返回值

cb2.OnAction = "test" //添加动作,即函数名称

})

}

function test(){ //点击菜单时执行此函数

var b=CommandBars.ActionControl; //获取当前点击菜单的标签名称

MsgBox("您点击了【"+b.Tag+"】") //弹出对话框,内容为所点击菜单名称

}

【素材下载】

https://kdocs.cn/l/cjRK8lgXbmvV

贵州省
浏览 3909
59
72
分享
72 +1
62
59 +1
全部评论 62
 
赖丽萍
· 浙江省
回复
 
王萍
非常有用
· 陕西省
回复
 
天气晴
超实用技巧
· 广西
回复
 
強
实用,超喜欢。
· 云南省
回复
 
饭饭&凡
很实用
· 安徽省
回复
 
꧁꫞꯭吃饭睡觉看抖音꫞꧂
· 广东省
回复
 
Strive
确实方便了很多!
· 重庆
回复
 
WPS_1657859017
非常有用,果断收藏
· 四川省
回复
 
~情比纸薄
非常满意
· 广东省
回复
 
Miss Yan
非常实用 感谢分享
· 中国
回复
 
winnie Cheung
非常实用,感谢分享!
· 广东省
回复
 
辛德瑞拉
有用!
· 江西省
回复
 
穆阳
这个方法还是很实用的,感谢
· 河北省
回复
 
永不言弃
大哥,着急找你,救命啊。 抖音寻过来的
· 福建省
回复
 
陈龙-财税咨询筹划
实用,点赞
· 湖北省
回复
 
永不言弃
大佬666,我是你的小迷弟
· 福建省
回复
 
浅夏℡
实用,点赞👍
· 江苏省
回复
 
雷佳兴
感谢分享 平安喜乐
· 湖南省
回复
 
WPS_1704285735
感谢分享,点赞👍
· 重庆
回复
 
雷钟馗
学习学习学习
· 山东省
回复