WPS宏自动化新突破:JSA宏调用指南 点击使用AI助手 了解更多
发布于 2024-11-20 liusiyang 54 编辑
此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。
以下是历史内容:
在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。
但是WPS的COM接口,表面是和Excel通用,但也有许多bug存在。暂时没有测试到是否存在JSA宏正常而VBA宏不正常的情况。
反正WPS也就躺平了,在二次开发里有bug,不管怎么反馈,也是懒洋洋的,不当一回事。
通常情况下,使用COM接口来调用WPS个人版也足够了。但事实是,在JSA宏里有的一些接口,WPS没有开放同步到VBA接口上。例如插入嵌入的单元格图片(这个还偷偷的有个接口,没见WPS文档里有说明,估计用来卖会员批量功能,防止大家二开来调用了)、插入webshape网页控件(这个是笔者最想要的接口),打开右侧任务窗格(不记得有没有这个能力)等。
如果使用外部程序或VSTO插件可以调用这些接口,是比较完美的。例如使用RPA工具,可以全自动化地对其进行单元格图片插入,最后形成报告结果。在VSTO里可以调出webshape网页控件等,非常广阔的应用场景。
现如今,还真可以了。稍有点曲折,但总算是可以做到在windows环境下实现调用JSA宏的愿景。
如何调用,答案和FreeScript类似,仍然使用了Application.Run方法,在外部程序或VSTO插件里,调用这个方法,同样可以运行JSA宏。
【支持R脚本】FreeScript给数据分析工作者带来无限惊喜,在Excel/WPS环境上做专业数据分析不是梦
有了这个口子后,接下来,就是想办法把自己要实现的jsa宏放到一个xlsm文件里,然后使用外部程序打开这个xlsm文件,就可以使用Application.Run方法来调用了。
例如简单实现一下,打开网页控件
用外部程序例如C#来调用它,代码如下:
最后,就可以得到自己想要的结果了,xlsm文件打开后,里面的JSA宏是程序级别的,可以用到其他工作薄中。当然代码写得简陋,只是测试,还可以做更多精细化控制。
同样地,插入嵌入图片,代码如下,可以再封装成有参数的方法。
需要注意的是:Application.Run只能传入文本参数,不能是对象参数。例如你不能传一个Range对象,但你可以自己传入一些工作表名、单元格地址等,自己在JSA宏里根据这些参数得到一个Range对象。
总结
WPS在二次开发上的支持,真的出了名的糟糕,WPSJS加载项、JSA宏,一开始觉得开了个不错的头,但几年下来,毫无进展。
有什么样的菜做什么样的饭,既然没有了,保能自己想办法创造,利用现有的可行的方案,自己再慢慢堆积了,例如笔者给WPS扩展了调用主流开发语言的FreeScript插件,和本篇的可以调用JSA宏,有了这两样的加持,相信在WPS的二次开发上,能够得到很大的改进和提升。
欢迎持续关注本号给大家探索出的高能黑科技。也欢迎有RPA/BI/OFFICE二次开发等企业项目数据需求的,找笔者来定制支持,笔者将使用所积攒的各种技术给您交付一个高质量的解决方案。
原文链接:https://bbs.wps.cn/topic/36290