对于初学者,没接触过JavaScript语句和vba的,可能理解起来有些困难。所以我推荐面向搜索编程,对于一些js语法和函数问题现学现用都可以找到答案。对于与WPS宏相关的一些问题,可以参考WPS开放平台中的开发文档、 docs.microsoft.com 网站的开发文档、搜索vba的一些实例即可解决。
首先是如何使用WPS开放平台中的开发文档。
从上一节的1、从零开始了解和使用WPS的js宏(JSA)图1.1的宏编辑器界面,按F1打开WPS开放平台,选择开发文档,客户端开发,选择搜索栏下面的WPS 基础接口。
如图2.0
WPS 基础接口 图2.0
第一条是【从Visual Basic转到 JavaScript】,如果有点基础的话,看过这篇文档以后就可以上手操作了。
因为我是以表格为例,所以经常使用的就是图上的【表格 API 参考】。使用过VBA的朋友对这里面的对象应该都很熟悉,这些对象的属性和方法与VBA中的没什么不同,只是在使用过程中要注意语法问题。
关于JavaScript的学习教程,以头条搜索为例:
在搜索框输入:js 函数教程 w3cschool
或者输入:js 函数教程 菜鸟教程
网页出来后,在前面几条中选择非CSDN的网站即可。
搜索 图2.1
如图2.1 选择第三条打开。这些网站都是针对初学者的,根据具体案例学习应该非常容易。
下面分析一下上一篇最后部分代码的内容 图1.6。
function定义常量(){return"返回常量"}function定义变量(){returnApplication.Worksheets.Item("Sheet1").Range("a1").Value2}
如上代码,JSA 不能在函数体外定义变量常量和对象,所以定义常量和全局变量只能采取这个变通方法。
第一行代码直接使用函数返回定义的常量,这么做有两点原因:
1、定义一次全局使用,尤其是像Sheet这种工作表的名称,比如默认使用Sheet1,就可以在模块里定义这个函数,当Sheet1改名时,只要改这一个函数就行,而不用搜索全部代码进行修改。
2、JSA 宏编辑器看不到工作表(Worksheet)对象,Worksheet对象的CodeName是空值,无法在代码中直接引用对象。下面给出与VBA代码编辑器的对比:
图 2.2.0
图 2.2.1
从图2.2.0 与图2.2.1对比,可以看出,VBA 可以使用WorkSheet对象的CodeName来使用对象,这样可以防止工作表被使用者改名和更改顺序导致的错误。而JSA 宏不能使用这个特性。因此JSA宏代码完成以后,最好是对工作薄(Workbook)对象进行保护。
//JSA 代码对工作簿进行保护,第一个参数是密码,可以录入123这样的密码;//第二个参数是结构,这个为true将不能更改顺序、重命名、删除、复制等工作表操作//第三个参数是窗口,这个为true将不能对单个工作表进行窗口化操作:大小及关闭;//第一个参数不使用密码,VBA代码:Application.Workbooks(1).Protect( ,true,true);//JSA 空参数使用undefined;只要中间的参数为true就可以防止工作表被改名。Application.Workbooks.Item(1).Protect(undefined,true,true)
上面这条语句可以放到立即窗口执行:在立即窗口,复制上面这条语句,光标放在这条语句上,回车后会执行。
立即窗口调试 图 2.3
如图 2.3,在立即窗口,除了保护工作薄的语句,我还加了一条函数,这个函数测试工作薄结构是否被保护,最终得到 工作簿已保护 的显示。
第二行代码
function定义变量(){returnApplication.Worksheets.Item("Sheet1").Range("a1").Value2}
使用单元格a1存储变量值,从而模仿定义全局变量的效果。
本节内容到此结束。从下一篇开始,我将从实例出发,逐步构建一个wps宏查询报表应用。这里面涉及到表格函数应用、SQL语句表格查询、js 语法等多方面的内容。