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

贵州省
浏览 7183
62
77
分享
77 +1
69
62 +1
全部评论 69
 
老麦
这正是想要的工具,太感谢了!!!
· 广东省
回复
 
学无止境
老师, 请问一下, 是否每一个工作簿都需要复制这个代码呢? 是否有办法配置后在任意一个新工作簿打开就能直接使用这个宏菜单功能?
· 广东省
回复
老麦
这个问题,在社区看了N多贴子,琢磨了好久,大概搞明白了一点,总结如下,希望对你有一些帮助。因为我不是专业开发的,只是平时为了多摸鱼,加之自己有这方面爱好,所以自学了VBA和JSA,写了一些宏代码。因此,以下总结的语言用词很可能是不专业的,但希望比较容易理解。 1、如果写了一些通用的工具,即不仅仅是适用于当前工作簿,也适用于任何工作簿的,那么可以按以下步骤,将这些宏加载到工具栏。即: 1.1、将写好的含有宏的文件另存为".xlam"格式。 1.2、打开一个空白工作簿,点工具=》加载项=》浏览,找到刚才保存的".xlam"格式文件,点确定。 1.3、点文件=》选项=》自定义功能区,左边选宏,右边点新建选项卡=》新建组,添加左边相应的宏命令。然后确定。 1.4、这时会发现在工具栏就出来了添加的宏。 以上这个方法实现的功能是固定在工具栏上的,即新建工作簿或者打开任意工作簿时,这个宏都会出现在工具栏上,但这个工具栏是不会跟着文件的,当换一台电脑时是不会出现这个工具栏的。
· 广东省
回复
 
孟振楠
怎么将“加载项“更改成自己想要的名字,比如“懒人办公工具栏”
· 陕西省
回复
 
赖丽萍
· 浙江省
回复
 
王萍
非常有用
· 陕西省
回复
 
天气晴
超实用技巧
· 广西
回复
 
強
实用,超喜欢。
· 云南省
回复
 
饭饭&凡
很实用
· 安徽省
回复
 
꧁꫞꯭吃饭睡觉看抖音꫞꧂
· 广东省
回复
 
Strive
确实方便了很多!
· 重庆
回复
 
WPS_1657859017
非常有用,果断收藏
· 四川省
回复
 
~情比纸薄
非常满意
· 广东省
回复
 
Miss Yan
非常实用 感谢分享
· 中国
回复
 
winnie Cheung
非常实用,感谢分享!
· 广东省
回复
 
辛德瑞拉
有用!
· 江西省
回复
 
穆阳
这个方法还是很实用的,感谢
· 河北省
回复
 
永不言弃
大哥,着急找你,救命啊。 抖音寻过来的
· 福建省
回复
 
陈龙-财税咨询筹划
实用,点赞
· 湖北省
回复
 
永不言弃
大佬666,我是你的小迷弟
· 福建省
回复
 
浅夏℡
实用,点赞👍
· 江苏省
回复