别再死守 VBA 了!WPS JS 宏(JSA)迁移全攻略:避坑与进阶指南

E精精
E精精 WPS资深用户Lv.1 新人创作者KVPWPS函数专家

Lv.1新人创作者

嘿!大家好,我是小编 E精精!

最近给公司做的模板,由于数据突破了300列+8000行,公式卡的崩溃,于是决定改造一下,考虑到公司大部分同事都是WPS,使用VBA还需要按照插件等,考虑兼容性选择了WPS的JS宏处理,下面就一些踩的坑给大家聊一聊,希望对你有帮助!

▍了解WPS-JS宏

WPS-JS宏,我们也称为JSA对应的是VBA,使用的JS语言书写,但是基本保留了office对应的模型,对象模型和VBA大同小异,比如Workbooks、Sheets、Range等!

目前JSA已经支持到ES6,大部分现代语法,让JSA在代码实现方便比古老的VBA更加便捷和简洁!

如果你想从VBA顺利迁移到JSA,我会分享一点踩过的坑,需要牢记!

▍语法习惯的彻底改变

这是最直观的冲击。你需要从习惯的 Sub...End Sub 切换到 JS 的大括号({})语法体系

下面简单总结一下,具体可以学习一下JS基础知识!

①花括号语法

具体请看下图,我们使用function 函数名称{},大括号内书写逻辑,一般JS 建议在每行末尾加上分号 ;

② 申明变量语法变化

图中,我们也能看出,变量的申明也由VBA的 Dim变成了 let,具体还有两个,共3种

let:声明局部变量(推荐)。const:声明常量。var:旧式声明

③注释变化

VBA中我们使用单引号或者REM注释,在JSA中,我们使用

//注释内容/*多行内容注释*/

还有你可能也发现了,我们拼接字符不是用的&,而是加(+),这些也是一些细节变化!通过这个小案例,我们先了解一些,更多可以自己书写再深入!

下面我们再讲解一下对象处理方面的变化!

▍对象调用方面的变化

在 VBA 中,属性和方法的界限有时比较模糊。但在 JSA 中,方法必须带括号。

比如我们在VBA中,选择A1单元格直接使用Range("A1").Select 也是OK的,但是在JS中必须加上括号!不加括号,本质是返回一个函数,添加括号才会执行,这一点非常容易忘记,导致最后没有执行,刚开始转换,特别容易犯错!

添加上括号,执行后,A1单元格会被选中,同时返回true!

其中需要注意JSA大小写敏感,Range写成range直接报错,无法执行!

所以在书写的时候,还要记住大小写哈!

其中有一个特别需要强调且常用的就是VBA中的单元格值属性是默认的,很多时候Value可以不写,但是在JSA中Value是一个方法,必须写且必须添加括号执行!

▍数组起飞

VBA 的数组属性和方法非常有限,操作起来也是一言难尽。JSA 使用的是标准的 JS 数组,功能极其强大,属性和方法非常丰富!

在JSA中简单跑了一下,基本有36个左右!比如常见的 .map(), .filter(), .forEach(), .reduce()等!

还有数组的下标问题,很多时候JS的都是从0开始的,这点和VBA中不同,具体情况,还是推荐大小小测试并总结记忆!

还有很多细节变化,有时间我们再细节!早前写过一系列的JSA教程,有时间可能还需要补充一下实战案例和模板,毕竟实战中真的好用,不用考虑对面是否支持VBA问题了,同事真的大部分WPS……

今天的内容就到这里,更多办公自动化知识,欢迎关注小编,小编也在探索最新的AI办公自动化额!

你了解过JSA吗?
不知道,没用过
11 (50%)
了解,常用
4 (50%)
15人参与 截止时间:2026/09/30 02:33:37
江苏省
浏览 115
收藏
12
分享
12 +1
3
+1
全部评论 3
 
米斯特王
米斯特王 Lv.2 潜力创作者KVP

Lv.2潜力创作者

· 浙江省
回复
 
user_19042982
好是好,年纪大了,不想折腾了
·
回复
 
赵二
赵二 Lv.2 潜力创作者WPS产品体验官

Lv.2潜力创作者

不知道,没用过。
·
1
回复