前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >『JSA宏神助攻之二』使用外部程序/VSTO插件执行JSA宏

『JSA宏神助攻之二』使用外部程序/VSTO插件执行JSA宏

作者头像
Excel催化剂
发布于 2024-06-27 12:01:36
发布于 2024-06-27 12:01:36
21800
代码可运行
举报
文章被收录于专栏:Excel催化剂Excel催化剂
运行总次数:0
代码可运行

此乃旧文,题目改一下,有点系统性,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方法来调用了。

例如简单实现一下,打开网页控件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function 打开网页(urlStr)
{
  var sht= Application.ActiveSheet;
  sht.Shapes.AddWebShapeEx(urlStr)
}

用外部程序例如C#来调用它,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        static void Main(string[] args)
        {
            Type etAppType = Type.GetTypeFromProgID("Ket.Application");
            if (etAppType == null)
            {
                Console.WriteLine("WPS ET (Spreadsheets) application not found.");
                return;
            }

            Excel.Application app =(Excel.Application) Activator.CreateInstance(etAppType);
            //Excel.Application app= (Excel.Application)Marshal.GetActiveObject("Ket.Application");

            // 设置应用程序可见
            app.Visible = true;

            Excel.Workbook workbook = app.Workbooks.Open("C:\\Users\\19026\\Desktop\\testjsa.xlsm");
            var newwkb = app.Workbooks.Add();
            newwkb.Activate();
            app.Run("打开网页", "https://www.baidu.com");
            // 清理
            Marshal.ReleaseComObject(workbook);
            Marshal.ReleaseComObject(app);
        }

最后,就可以得到自己想要的结果了,xlsm文件打开后,里面的JSA宏是程序级别的,可以用到其他工作薄中。当然代码写得简陋,只是测试,还可以做更多精细化控制。

同样地,插入嵌入图片,代码如下,可以再封装成有参数的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function 插入嵌入单元格图片()
{
  var rng=Application.Selection
  var func= rng.RangeEx;
  func.InsertCellPicture("C:/Users/19026/Desktop/Snipaste_2024-06-18_15-33-31.png")
}

需要注意的是:Application.Run只能传入文本参数,不能是对象参数。例如你不能传一个Range对象,但你可以自己传入一些工作表名、单元格地址等,自己在JSA宏里根据这些参数得到一个Range对象。

总结

WPS在二次开发上的支持,真的出了名的糟糕,WPSJS加载项、JSA宏,一开始觉得开了个不错的头,但几年下来,毫无进展。

有什么样的菜做什么样的饭,既然没有了,保能自己想办法创造,利用现有的可行的方案,自己再慢慢堆积了,例如笔者给WPS扩展了调用主流开发语言的FreeScript插件,和本篇的可以调用JSA宏,有了这两样的加持,相信在WPS的二次开发上,能够得到很大的改进和提升。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
注册 WWDC 2025 的 Group Labs 了没? | 肘子的 Swift 周报 #085
三个月前,在与苹果某部门的交流中,我重申了对苹果继续举办 Lounges 或 Ask Apple 这类群体问答活动的期待。令人欣喜的是,WWDC 2025 中,全新的群体互动项目以 Group Labs 的形式回归了。
东坡肘子
2025/05/27
310
注册 WWDC 2025 的 Group Labs 了没? | 肘子的 Swift 周报 #085
肘子的 Swift 周报 #061|离开手机的两个小时
上周,我的一件物品需要修理,商家告诉我大约需要两个小时,于是我带上笔记本开车前往一家购物中心。直到将物品交给商家时,我才意识到犯了一个错误:忘记带手机了。这个看似不大的疏忽,在接下来的两个小时里给我带来了一连串的小麻烦。
东坡肘子
2024/12/10
910
肘子的 Swift 周报 #061|离开手机的两个小时
在平淡中等待 WWDC 2025 | 肘子的 Swift 周报 #084
不知不觉,距离 WWDC 2025 开始只有 20 天了。在过去的几年中,每当此时我都会写几篇文章畅想 WWDC 上会带来的新功能和我期待的一些变化。
东坡肘子
2025/05/20
560
在平淡中等待 WWDC 2025 | 肘子的 Swift 周报 #084
肘子的 Swift 周报 #056| Pixelmator 并购背后的思考
近日,Pixelmator 官方宣布即将加入苹果,目前正在等待监管部门的最终审批。他们承诺,旗下主打产品——Pixelmator Pro、iOS 版 Pixelmator 以及 Photomator 在短期内将不会发生重大变化。
东坡肘子
2024/11/23
920
肘子的 Swift 周报 #056| Pixelmator 并购背后的思考
肘子的 Swift 周报 #028 |用 iPhone 感受像素的游戏的快乐!
苹果公司最近更新了应用商店审核指南[3],现在允许模拟器应用进入 App Store。就在几天前,名为 Delta 的模拟器应用登陆了应用商店。Delta 是一款为 iOS 设计的综合模拟器,支持多种任天堂掌机游戏。这款应用其实很早以前就已经开发完成,但之前由于政策限制,只能以非商店形式提供给用户。
东坡肘子
2024/04/25
1480
肘子的 Swift 周报 #028 |用 iPhone 感受像素的游戏的快乐!
苹果为傲慢付出了代价 | 肘子的 Swift 周报 #082
几天前,Epic Games 与 Apple 案迎来了一项重要裁决。法官认定 Apple 故意违反了法院于 2021 年发布的反垄断永久禁令,表面上虽允许开发者使用第三方支付渠道,但却通过高额佣金、用户体验障碍以及警告页面等方式,实质上继续维护着原有的市场垄断地位。法院不仅批准了 Epic 提交的执行禁令动议,还罕见地将 Apple 的行为移交给美国司法部加州北区检察官,以调查其是否构成刑事藐视法庭。
东坡肘子
2025/05/06
710
苹果为傲慢付出了代价 | 肘子的 Swift 周报 #082
肘子的 Swift 周报 #060|Older or Outer?我开始怀念非智能时代
上周六,家里客厅的一个双控开关突然失灵了。这本是司空见惯的小故障,但对我而言,却别有一番意味。这是我 18 年前安装的众多智能开关中最后一个尚能正常工作的,它的“退役”,标志着传统智能设备在我生活中的全面落幕。
东坡肘子
2024/12/05
1260
肘子的 Swift 周报 #060|Older or Outer?我开始怀念非智能时代
肘子的 Swift 周报 #053| 打破年度发布制度:科技创新的新起点
还记得智能设备曾是耐用品、奢侈品吗?如今,它们已悄然具备了更多快消品、装饰品的属性。不知从何时起,年度更新、标新立异成了科技产品的常态。大公司的年度发布会,俨然成了科技界的时装秀,万众瞩目。
东坡肘子
2024/11/23
800
肘子的 Swift 周报 #053| 打破年度发布制度:科技创新的新起点
MCP 崛起与苹果的 AI 框架设想 | 肘子的 Swift 周报 #077
在最近一段时间,在社交网络上,越来越多的 Model Context Protocol(MCP)使用者展示了各种丰富多彩的应用场景,从操控 Blender 创建精美场景,到利用最新的 GPT-4o 图片构建完整的漫画故事。MCP 巧妙地打开了以文本为主要互动手段的大模型,与现实世界之间的大门。
东坡肘子
2025/04/02
1290
MCP 崛起与苹果的 AI 框架设想 | 肘子的 Swift 周报 #077
肘子的 Swift 周报 #046| 无警告编译并非 Swift 6 的初衷
最近,我着手重构自己的一个 App,其中 Swift 6 的完整支持成为了一个重要考量。在这个过程中,我首先尝试让自己构建的第三方库在 Swift 6 模式下实现完美编译。
东坡肘子
2024/08/27
2990
肘子的 Swift 周报 #046| 无警告编译并非 Swift 6 的初衷
肘子的 Swift 周报 #034 | WWDC 2024,AI 并非全部
苹果一直是 AI 领域的务实参与者,提供了卓越的设备端 AI 功能。然而,自从去年生成式 AI 的兴起,投资者、消费者、开发者都渴望苹果能够提供更加直观和感知丰富的 AI 技术。鉴于当前市场的需求,可以预见,在今年的 WWDC 2024 上,与 AI 相关的内容将占据极其重要的地位。
东坡肘子
2024/06/13
1760
肘子的 Swift 周报 #034 | WWDC 2024,AI 并非全部
肘子的 Swift 周报 #027 | 苹果助你成为一日“百万富翁”
1976 年 4 月 11 日,苹果公司迈出了重要一步,Steve Wozniak 设计的 Apple I 型电脑问世。尽管仅是一块需要用户自行添加键盘和显示器的电路板,但历史意义却极为重大,这款产品奠定了苹果公司的市场地位。
东坡肘子
2024/04/18
2100
肘子的 Swift 周报 #027 | 苹果助你成为一日“百万富翁”
别让 Vibe Coding 阻碍了你的技术成长 | 肘子的 Swift 周报 #082
几天前,一位之前高度赞扬并全身投入 Vibe Coding 的好友发表了一篇推文,表达了他近期基于 AI 编程的挫败感:
东坡肘子
2025/05/13
510
别让 Vibe Coding 阻碍了你的技术成长 | 肘子的 Swift 周报 #082
肘子的 Swift 周报 #048| Apple Watch,苹果生态的坚实纽带
由于大量新产品信息在发布前已遭泄露,我对苹果 9 月的发布会已逐渐失去兴趣,尤其是还要熬夜观看。事实上,近几年我已经很少观看苹果发布会的直播了。
东坡肘子
2024/11/23
1440
肘子的 Swift 周报 #048| Apple Watch,苹果生态的坚实纽带
肘子的 Swift 周报 #058| 运气眷顾耐心的人
家里的淋浴间出现了渗水情况。尽管漏水量很少,但这个问题已经困扰了一段时间。找来了一位经验丰富的维修师傅,他带着超声波和热成像两种漏水检测仪上门,却因渗水量太小无法定位。更奇妙的是,就像许多患者到了医院后症状会消失一样,自从预约了维修师傅后,渗水情况便消失了。
东坡肘子
2024/11/23
1090
肘子的 Swift 周报 #058| 运气眷顾耐心的人
肘子的 Swift 周报 #043| 记忆归档和唤醒
上个周末,我参加了高中同学的聚会。尽管与不少同学仍保持着较为密切的联系,但也有些许同学自毕业后已经数十载未曾谋面。席间,众多同学沉浸在对往昔校园生活的回忆中,墙上的投影播放着由同学精心制作的在校时光旧照片剪辑。
东坡肘子
2024/08/06
1920
肘子的 Swift 周报 #043| 记忆归档和唤醒
肘子的 Swift 周报 #057| 超宽虚拟屏很棒,但我们期待更多
visionOS 2.2 测试版本的发布,终于为 Apple Vision Pro 带来了期待已久的“宽”和“超宽”虚拟屏幕模式。在超宽模式下,使用者眼前会呈现出一个可以超越物理视野限制的庞大显示空间。尽管 Apple Vision Pro 的硬件分辨率有其局限性,但得益于焦点渲染(Foveated Rendering)技术的加持,虚拟屏幕不仅较此前更为清晰,更能带来堪比 8K 显示器的视觉体验。
东坡肘子
2024/11/23
1100
肘子的 Swift 周报 #057| 超宽虚拟屏很棒,但我们期待更多
肘子的 Swift 周报 #033|改善社区活跃度,仅更新论坛还不够
苹果公司最近对 开发者论坛[3] 进行了一次显著的设计更新。新版本不仅提供了更为优雅的视觉设计,还对论坛分类进行了合理化调整,每个分类和标签都增加了RSS链接,使开发者能更及时地获取到自己关注领域的信息。
东坡肘子
2024/05/31
2090
肘子的 Swift 周报 #033|改善社区活跃度,仅更新论坛还不够
肘子的 Swift 周报 #047| 从驾照体检看社会的发展
从驾照体检看社会的发展一周前,我收到 12123 交警 App 的提醒,告知我需要更换驾照了。距离上次换证已经过去了十年,这期间,无论是有关驾照的法规还是驾照体检的方式,都发生了显著的变化。
东坡肘子
2024/11/23
830
肘子的 Swift 周报 #047| 从驾照体检看社会的发展
切勿将辅助驾驶宣传成智能驾驶 | 肘子的 Swift 周报 #078
不久前,某个造成三人死亡的交通事故因为涉及某新锐电动汽车品牌再度引发了人们对“智能驾驶”功能的质疑。在目前披露的有限资料中,至少可以确认的是,“智能驾驶”系统未能在相当长的一段行驶距离中判断出当前的路段正在施工(沿途有施工警示标志),只在撞击前2-3秒前给予了警示。这意味着,在系统报警后,驾驶者只有极短的反应时间。
东坡肘子
2025/04/09
740
切勿将辅助驾驶宣传成智能驾驶 | 肘子的 Swift 周报 #078
推荐阅读
相关推荐
注册 WWDC 2025 的 Group Labs 了没? | 肘子的 Swift 周报 #085
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验