同一条"把重复操作交给软件自动跑"的需求,在 WPS 里有两条路:传统的 VBA 宏,和 WPS 自家的 JS 宏(官方简称 JSA)。这篇把两者的差别、JS 宏的入口与写法、以及旧 VBA 代码迁过来要改哪几处,按 WPS 官方文档、官网教程和官方社区帖整理成一份能照着做的入门说明。结论放在前面:日常的批量改格式、批量汇总,用 JS 宏就够,不必再额外找 VBA 组件;只有要运行现成的 .bas 模块或依赖 VBA 专有能力时,才值得去开通 VBA。
信息核验时点:2026-10-20(WPS Office 桌面版;具体版本号以客户端「全局设置—关于 WPS Office」显示为准。文中引用的 8 个 WPS 官方页面均在 2026-10-20 逐个打开核对过原文,页面本身没有标注更新时间,所以本文只引用能在页面上逐字找到的表述)
本文要点
- 一句话定义:WPS 宏是把一组固定操作打包成一键执行的自动化脚本,WPS 同时支持 VBA 宏和 JS 宏两类。
- 核心结论:JS 宏是 WPS 的基础功能,无需付费;VBA 宏需要商业版本,或在「开发工具」选项卡里获取使用权。
- 适用场景:表格批量改格式、批量汇总、按单元格事件自动响应等规律明确的重复工作。
- 适用人群:懂一点 JavaScript 的办公用户,以及打算把旧 VBA 工具迁到 WPS 的开发者。
- 短板 / 边界:官方说明 JS 宏编辑器跑的是 JS 运行时而不是浏览器,document、window 这类浏览器对象在其中用不了。
WPS 宏是什么?
WPS 宏(Macro)是一组可以自动执行的操作或脚本,把规律明确的重复动作打包起来,之后一键重复执行。WPS 官方说明写得很直接:WPS 支持 VBA 宏和 JS 宏(JSA)两类,都能实现自动化(WPS 宏怎么用)。
可以把录制宏理解成录音:你操作一遍,软件把动作记下来。JS 宏则像写乐谱,每个动作由你自己用代码描述,能拼出录音记不下来的复杂逻辑。
JS 宏和 VBA 宏各自解决什么问题?
VBA(Visual Basic for Applications)是微软 Office 时代留下的自动化语言,历史久、现成代码多、教程全。
JS 宏是 WPS 主推的方案,用 JavaScript 语法操作文档对象,官方把它定位成"更轻量现代,也便于和 Web 技术结合"。两者是并行的两套体系,函数写法、取值方式都不一样。
JS 宏(JSAPI)和 VBA 宏的主要区别在哪?
JSAPI 是 WPS 开放平台提供的 JavaScript 接口集合,也就是 JS 宏里能调用的那一套对象与方法。
把关键差异并列看,能更快判断手上的活该交给谁。下表内容分别取自 WPS 官网宏教程页与 WPS 开放平台的官方对照文档。
| 对比项 | VBA 宏 | JS 宏(JSAPI) |
|---|---|---|
| 编程语言 | Visual Basic 方言 | JavaScript |
| 运行环境 | WPS 内置的 VBA 引擎 | 集成的 V8 引擎 JS 运行时 |
| 函数定义 | Sub 名称,End Sub 收尾 | function 名称() {} |
| 集合取值 | Workbooks(1) | Workbooks.Item(1) |
| 缺省参数 | 可以直接命名传参 | 用 undefined 占位补齐 |
| 费用 | 需要商业版本 | 基础功能,无需付费 |
「函数定义」「集合取值」「缺省参数」这三行逐条对应官方对照文档《从 Visual Basic 转到 JavaScript》里的写法示例(WPS 开放平台),「运行环境」那一行的 V8 引擎出自官方《JavaScript 运行时说明》(WPS 开放平台),最后一行的费用差异取自 WPS 官网。
风险提示:VBA 宏要花钱。官方原话是"若提示当前套餐无权限,需在'开发工具'选项卡里获取 VBA 使用权"(WPS 宏怎么用)。官网另一篇文章说得更直白:JS 宏是基础功能,无需付费;VBA 宏需商业版本(Excel 宏怎么用)。
如果你还在几条路线之间犹豫——VBA、JS 宏、Python、COM 加载项各适合什么,本站另有一篇横向对比:Office 与 WPS 编程方式横向对比。
怎么在 WPS 里跑通第一个 JS 宏?
按下面的顺序做一遍,能拿到一个会弹窗的最小可运行宏。
- 打开 WPS 表格,切到「开发工具」选项卡。如果功能区里没有这一项,就到「文件」-「选项」-「自定义功能区」把它勾上,确定后选项卡出现在功能区。
- 在「开发工具」选项卡里点击"切换到JS环境",再点击「JS宏」按钮。之后会弹出「JS宏」对话框,可以对当前环境下的 JS 宏做编辑、删除、运行、修改信息的操作(运行宏对话框)。
- 点击「WPS 宏编辑器」按钮,打开宏编辑器。官方说明界面由工程资源管理器、代码编辑器、属性窗口、菜单工具栏几块组成(WPS 表格宏怎么用)。
- 在工程资源管理器里右键当前工作簿,选择「插入」-「模块」,右侧代码区就绪。代码必须放进模块里才能运行。
- 粘贴下面这段最小脚本,按 F5 或点击工具栏的「运行」按钮。这段代码要做的事很直白:MsgBox 弹出当前文档名,Console.log 把圆周率打印到输出窗口——运行后能不能看到这两样,就是这一节算不算跑通的判断标准。
function CheckDoc() {
// 显示当前文档名称
MsgBox(Application.ActiveDocument.Name);
// 把圆周率打印到下方输出窗口
Console.log(Math.PI);
}- 需要调试时,在代码行号左侧点一下设置断点,按 F5 运行会在断点处暂停,再按 F8 单步执行逐行检查;官方博客还提到可以在「立即窗口」里输入变量名查看当前值(WPS 表格宏怎么用)。
第一次跑不通时,按这三点自查:一是确认已经切到 JS 环境,官方给出的运行宏路径是「开发工具」选项卡-"切换到JS环境"-"JS宏"按钮,第一步漏掉后面全都找不到入口;二是确认代码放进模块里了,官方说明代码需要存放在模块中;三是核对函数名和属性名的拼写——下面第四节会讲到,JS 宏里写错属性名不报错,只安静地返回空值,这是排查时最容易漏掉的一条。
安全提示:宏本质是程序,可能携带恶意代码。官方建议只启用自己录制或可信来源的宏,相关开关在「开发工具」-「宏安全性」中设置(Excel 宏怎么用)。
从 VBA 迁移过来,代码要改哪几处?
官方专门写了一页《从 Visual Basic 转到 JavaScript》做对照,整页按七个小节展开:JSAPI 接口差异、函数定义、数据类型、运算符、枚举、With 关键字、条件语句。下面照这七节各挑一条最容易踩的。
- 接口差异(第一节):方法一律加括号,不加括号会被 JS 语法当成属性;集合里的对象要用 Item 方法取,二维数组取值时还要把 value 换成 Value2;VBA 能给部分参数命名赋值,JS 得按位置补齐,跳过的参数写 undefined。属性这一头,ThisDocument 官方标注暂不支持,用 ActiveDocument 代替。
- 函数定义(第二节):VBA 用 Sub…End Sub 收尾,JS 用 function 名称() {}。
- 数据类型(第三节):VBA 声明变量要写类型(Dim i As Integer),JS 是动态类型,统一写 var i;布尔值也从首字母大写的 True/False 改成小写的 true/false。
- 运算符(第四节):取余从 Mod 关键字改成 % 运算符,逻辑与/或从 And/Or 改成 &&/||,字符串拼接直接用 +。
- 枚举(第五节):VBA 里 wdAlignParagraphLeft 和 WdParagraphAlignment.wdAlignParagraphLeft 两种写法都对,JS 里只有短名那一种可用。
- With 关键字(第六节):JS 没有 With,把 With 后面那个对象先赋给一个变量,再逐句调用它的方法和属性。
- 条件语句(第七节):IF 条件 Then … Endif 换成 if (条件) { … },条件里的判断符也要跟着换。
三处最容易踩坑的写法,对照着看更直观:
// VBA 写法:Application.Workbooks(1).Close
Application.Workbooks.Item(1).Close()
// VBA 写法:Range("A1:N29").Find("香港特别", LookIn:=xlValues).Select
// 第二个参数在 JS 里留空,用 undefined 占位
Application.ActiveSheet.Range("A1:N29").Find("我", undefined, xlValues).Select();
// VBA 写法:cells(2, 3).value
Application.Cells.Item(2, 3).Value2另外提醒一句,官方文档标注 VBA 里写错属性名会报错,JS 里不会报错,只会安静地返回空值。迁移后如果结果不符合预期,先回头检查属性名拼写。
宏只是迁移中的一环。格式兼容、日常习惯这些更容易踩的坑,本站在 Office 迁移到 WPS 要改哪些 里单独讲过。
JSAPI 的对象模型该怎么理解?
对象层次和 VBA 的思路一致,都是从 Application 往下走到单元格。
Application 代表 WPS 程序本身,Workbook 代表工作簿,Worksheet 代表工作表,Range 代表单元格或区域。层级记熟了,查文档就快。官方文档按组件分目录:本文引用的《从 Visual Basic 转到 JavaScript》和《JavaScript 运行时说明》都挂在 WPS 开放平台的 jsapi 路径下,后者还进一步归在 macro-editor-api(宏编辑器 API)子目录里。查方法时先按组件找到对应目录,再往下翻。
至于编辑器本身,官方《宏编辑器概述》列出的能力是:常用代码编辑器、录制宏、运行宏、自定义公式、设计 UI 控件执行宏以及调试器(宏编辑器概述)。
一个实用的学习办法:先手动做一遍操作并录下来,让 WPS 把动作转成 JS 代码,再照着录出来的写法去查文档——官网教程页就是这么建议的,用「录制宏」操作后 WPS 会自动生成 JS 代码(Excel 宏怎么用)。
官方社区帖里也提到接口文档的更新情况:WPS 表格文档更新的 API 对象均补充了 JS 示例,并为所有属性或方法补充了类型或返回值信息,入口在 WPS 开放平台的「WPS 基础接口」-「表格 API 参考」;同一帖也写明该次更新仅限表格 API,WPS 文字的 API 文档当时还在完善中(WPS Office 官方社区)。
运行环境上有一句要特别注意:宏编辑器集成的是 V8 引擎的 JavaScript 运行时,支持大部分 ES6 语法,但它不是浏览器,因此不支持浏览器的内置对象(JavaScript 运行时说明)。在网页里能用的 window、document,在这里直接用会报错。
哪些场景可以直接换成 JS 宏?
判断标准很简单:操作规律明确、步骤能写清楚,就适合交给 JS 宏。
- 批量格式处理:一份几十页的表格要统一字体字号、列宽行高,手工点一遍极为重复,写成宏一次跑完。
- 批量数据加工:按规则清洗、汇总、拆分工作表,这类活写一次能反复用。
- 事件响应:选中某个单元格就自动查数、填表。官方对照文档给过一个完整例子——把 VBA 的
Workbook_SheetSelectionChange过程改成同名的 JS 函数,参数为 Sh 和 Target,在函数体里判断行列位置,再对 Target.Validation 追加一个下拉列表(从 Visual Basic 转到 JavaScript)。 - 扩展公式:官方说明在表格里可以用宏来扩展公式,把复杂逻辑封装成一个函数名(宏编辑器概述)。
反过来,如果你手上是别人写好的 .bas 模块、依赖 VBA 专有对象或 Windows 专有调用方式,那就先别急着换语言,把 VBA 环境配起来更省时间。
常见问题
JS 宏要付费吗?
不需要,JS 宏属于 WPS 的基础功能。
WPS 官网在讲表格宏时写得很明确:JS 宏是基础功能,无需付费;VBA 宏需商业版本(Excel 宏怎么用)。WPS 365 博客在前提条件里说明,个人免费版即可使用宏(WPS 表格宏怎么用)。
实际能不能用,以你客户端里「开发工具」选项卡的显示为准。
JS 宏能完全替代 VBA 吗?
对日常办公自动化来说基本够用,但两者不是同一个物种,不能无条件替换。
JS 宏免费、语法接近现代 JavaScript,和前端知识复用度高。官方也说它"更轻量现代,也便于和 Web 技术结合"(WPS 宏怎么用)。
需要跑旧模块、依赖 VBA 专有对象模型,或团队已有大量 VBA 积累时,先评估迁移成本再动手更稳妥。
宏写好后怎么分享给别人?
把带宏的文件发给对方,对方打开并启用宏即可运行。
WPS 365 博客在常见问题里说明,宏代码保存在工作簿文件中(.xlsm 格式),把文件发送给其他人后,对方打开并启用宏就能运行(WPS 表格宏怎么用)。
风险提示:正因为宏代码能随文件传播,来源不明的宏文件不要打开,这是宏病毒最常见的入口。
录制宏能录下所有操作吗?
录不了全部。官方博客在常见问题里说明,部分高级操作(如条件格式、图表创建)无法通过录制完成,需要手动补充代码(WPS 表格宏怎么用)。
比较现实的用法是:先用录制拿到基础操作的代码骨架,再到编辑器里补上录制不到的部分。
下一步怎么做
先做一个能立刻见效的小宏:把最常重复的那套表格操作录一遍,再看它生成的 JS 代码,改掉其中写死的区域范围。
跑通之后,到 WPS 开放平台按组件查 API 参考,把录制不到的逻辑补上。
需要跑旧 VBA 模块的话,先确认套餐里有没有 VBA 使用权,再决定是装环境还是重写成 JS 宏。
延伸阅读
本文数据核验于 2026-10-20,以官方 Release Notes/文档为准。