最近使用了一下wps的宏本地客户端功能进行了数据查询,与vba相比感觉还是比较好用的。(所谓本地客户端就是指单机使用运行的wps程序)

VBA因为长时间的发展,胜在功能比较强大,支持一些ActiveX对象和WindowsAPI的调用。但是缺点也很明显,一是安全性不够好,一些木马和病毒经常利用这个脚本强大的功能,二是兼容性不够好,换台电脑或者换个MSOffice版本,很可能就出错了。

1、从零开始了解和使用WPS的js宏(JSA)插图

vba IDE 界面(图1.0)

WPS JS宏也叫JSA,去掉了VBA一些对象和windowsAPI调用功能。其他的方面,JSA官方开发文档的原文是:WPS宏编辑器集成了一个V8 引擎的 JavaScript 运行时,支持大部分ES6语法,因此宏编辑器支持JavaScript 标准内置对象,注意,JS内置对象和浏览器的内置对象是不同的,WPS宏编辑器集成的是JavaScript 运行时,而不是浏览器,因此WPS宏编辑器不支持浏览器的内置对象。,因此,JSA不必太过考虑兼容性,如果会一点js语法的话,上手会很快。

1、从零开始了解和使用WPS的js宏(JSA)插图1

jsa IDE 界面(图1.1)

下面从零开始学习这个非常有用的工具,全程以表格的使用为例。

首先,打开wps,新建空白表格,进入【开发工具】菜单。如图1.1。

我们先定义一个自定义函数,测试一下:如图1.2

function testFunction(){

var t=”hello world”

alert(t)

}

1、从零开始了解和使用WPS的js宏(JSA)插图2

图1.2

可以看到,这个IDE还是比较好用的,录入代码时有提示,并且键入(){}”” 等这些成对的英文符号时,只需按一个就行,另一个自动补全。光标自动的定位到中间。

使光标在函数体中间,点击运行按钮,弹出”hello world”的对话框。如图1.3

1、从零开始了解和使用WPS的js宏(JSA)插图3

图1.3

下面,把代码改成如下的样子,即在每行的语句结束处加上;这个英文分号,点击运行:

function testFunction(){

let t=”hello world”;

alert(t);

}

可以看到,能成功运行。

接下来,把代码改成一行的格式:function testFunction(){let t=”hello world”; alert(t);}。可以成功运行。

把代码中的分号删除:function testFunction(){let t=”hello world” alert(t) }。

弹出错误,如图1.4

1、从零开始了解和使用WPS的js宏(JSA)插图4

图1.4

说明JSA代码语句分割可以用英文分号,也可以与vba一样用换行分割

接下来把代码改成如下样子:

var t=”hello world”

function testFunction(){

alert(t)

}

运行后如图1.5,提示 语法错误:函数外不能使用赋值表达式,变量初始化和函数调用。

1、从零开始了解和使用WPS的js宏(JSA)插图5

图1.5

接下来把代码改成:

var t

function testFunction(){

t=”hello world”

alert(t)

}

再改成:

let t //或者 const t

function testFunction(){

t=”hello world”

alert(t)

}

都与图1.5的错误差不多:即JSA 不能在函数体外定义常量和变量

既然不能在函数体外定义常量和变量,那么只能曲线救国,结合表格在需要的时候使用函数定义常量和全局变量。

function 定义常量(){ return “返回常量”}

function 定义变量(){ return
Application.Worksheets.Item(“Sheet1”).Range(“a1”).Value2}

function 测试函数(){

let c = 定义常量()

alert(c)

let v =定义变量()

alert(v)

}

1、从零开始了解和使用WPS的js宏(JSA)插图6

图1.6

具体示例下回分解。