1. 关于应用对象
该对象是一个正在运行的WPS电子表格(ET)应用程序。它是整个应用程序的根对象,其上没有其他程序对象。
ET在WPS文件夹中的图标如下:
WPS电子表格运行时,任务管理器中的图标如上所示。
注意:不要认为该对象是WPS程序运行时生成的顶层对象,而是WPS电子表格程序运行时的顶层对象,WPS程序运行时可以同时运行WPS程序框架下的电子表格、PPT、文档等。
2. 常用属性
对象的常用属性(不常用的这里就不一一列举了)列举如下(此表格摘自WPS开放平台):
姓名
阐明
返回表示活动窗口(顶部窗口)或指定窗口中的活动单元格的对象。如果窗口中未显示任何工作表,则此属性无效。只读。
对于对象,返回在活动窗口中选择的对象。
返回代表活动工作表中的所有单元格的对象。如果活动文档不是工作表,则此属性无效。
行
返回代表活动工作表中的所有行的对象。如果活动文档不是工作表,则 Rows 属性无效。对象,只读。
返回代表活动工作表中的所有列的对象。如果活动文档不是工作表,则此属性无效。
返回一个对象,该对象代表活动工作簿或指定窗口或工作簿中的活动工作表(最顶层的工作表)。如果没有活动工作表,则返回 null。
对于对象,返回代表活动工作簿中的所有工作表的集合。对于对象,返回代表指定工作簿中的所有工作表的集合。对象,只读。
返回表示活动窗口(顶部窗口)中的工作簿的对象。只读。如果没有打开的窗口或者信息窗口或剪贴板窗口是活动窗口,则返回 null。
返回代表所有打开的工作簿的集合。只读。
姓名
返回代表对象名称的值。
返回代表活动工作簿中所有名称的集合。只读对象。
返回 ET 的内部版本号。类型,只读。
返回或设置代表出现在 ET 主窗口标题栏中的名称的值。
小路
返回代表应用程序完整路径的值,不包括尾随分隔符和应用程序名称。
返回代表 ET 版本号的值。
小编将上面的表格分为工作表、工作簿、对象属性三个维度,方便大家记忆和理解。
3. 常用方法
对象常用的方法(不常用的就不一一列举了)列举如下(此表摘自WPS开放平台):
姓名
阐明
将 ET 名称转换为对象或值。
去
选择任意工作簿中的任意范围,如果该工作簿尚未激活,则激活该工作簿。
显示一个对话框来接收用户输入。返回在此对话框中输入的信息。
辞职
退出 ET
跑步
运行宏或调用函数。此方法可用于运行在宏编辑器中编写的宏,或运行 DLL 或 XLL 中的函数。
四、练习1、打开一个“启用宏的工作簿文件”时,对比一下WPS表格版本,如果版本低于12(WPS版本12也是最新版本)或者内部版本低于某个版本(这里假设是版本,其实这个版本是最新版本,但为了演示效果,暂时定为这个版本),会弹出提示:版本太低,此宏表格需要高级版本,请先升级程序版本。用户点击确定后,退出WPS表格。
为了解决这个问题,我们需要:
1.用到对象本身的两个属性:一个是属性(),一个是特性()。
该属性返回的是WPS表格的版本号,而不是内部的版本号;
该属性返回内部版本号。
例如我的WPS表格的版本号如下:
2.对象事件。事件是怎么产生的呢?我们每次打开、关闭、点击等一个表的时候,这些动作都会触发对应对象的相应事件,比如打开事件、关闭事件、点击事件等。
事件是我们 JSA 编程和情报的主要前提。
JSA 中的任何对象都有事件。善用事件将是我们 JSA 宏的利器。
如何设置活动?
第一步,打开WPS宏编辑器
第二步,选择事件,我们需要在这里选择事件。
3. 编写代码
function Application_WorkbookOpen(wk) { let app = Application.Application;//将Application对象赋值给一个变量,缩短文本量。 //将版本号和内部版本号赋值给变量。 let build = app.Build; let version = app.Version; let userChoice;//这个变量用来存储用户的选择。 //做出判断,如果版本号不高于12或者内部版本号不高于17133,则提示用户软件要升级 //在用户做出选择之后,退出WPS表格 if(build <= 12 || version <= 17133) { userChoice = MsgBox("抱歉,由于您的WPS版本过低,暂时无法使用本系统,请升级后再试!",0,"版本提示"); } if(userChoice == 1) { app.Quit();//关闭WPS表格 } }
4.先退出打开的WPS表格,再重新打开,效果如下
(PS:图片较小,内容也不是很清晰,不过基本的演示效果还是能看清楚的,现在担心的是如何把这个文件的代码改回来,才能回到正常的演示轨道。)
练习二:打开表格时,1、获取当前打开的表格的文件名,显示在A8单元格;获取其包含的工作表个数,显示在A9单元格;2、在第一个工作表的A10单元格中输入“,WPS JS 宏!”。
由于练习1的时候演示文档无法进入WPS宏编辑环境,所以编者只能重新打开一个新的工作表来练习这道题。
与练习 1 一样,要实现此功能,您需要对象的以下属性。
事件:
要在工作表的单元格中输入内容,还需要工作表对象的属性。这个属性非常重要,在以后的工作中几乎处处都会用到。虽然不是本期的内容,但会提前讨论一下。
工作簿的属性:
同样,像练习1一样,选择事件,然后编写代码。
一切准备就绪,只剩代码了。下面是我编写的代码。
function Application_WorkbookOpen(wk) { //定义一个变量,用来存贮工作表数量 let sheetsCount = Application.ActiveWorkbook.Worksheets.Count; //定义一个变量,用来存贮工作簿路径 let bookName = Application.ActiveWorkbook.Name; //分别对A8、A9、A10三个单元格填充文本。 Application.ActiveWorkbook.Sheets(1).Range("A8").Value2 = "当前工作簿的名称是:" + bookName; Application.ActiveWorkbook.Sheets(1).Range("A9").Value2 = "当前工作簿有" + sheetsCount + "个工作表."; Application.ActiveWorkbook.Sheets(1).Range("A10").Value2 = "Hello,WPS JS宏!"; }
因为此代码只有在工作簿打开的情况下才会起作用,所以需要先关闭工作簿,然后打开才能看到效果。
可以看到,我们想要的效果已经达到了。
练习3:宏运行后,弹出一个对话框,要求用户输入一些内容,然后用户输入的内容显示在单元格C15中。
练习3不需要在文件打开时运行,所以我们不需要在这里打开事件。
为了完成这个练习,我们需要使用对象的以下属性和方法:
属性:
方法:
工作表对象的属性:
工作簿对象的属性:
代码如下所示。
function InputSomeText() { let str;//变量,用来存贮用户输入的内容 str = Application.InputBox("请输入一句祝福话语,以此鼓励自己!","用户录入"); Application.ActiveWorkbook.ActiveSheet.Range("C15").Value2 = str; }
运行结果:
运行上面动画操作中某个宏的方法:“开发者工具”->“运行宏”->选择需要运行的宏,然后点击运行。
通过上面的演示我们可以看出,在编写相关代码时,需要注意以下几点:
1.当第一个对象处于较高层级时,如果想要获取较低层级的对象,需要逐步获取。
2. 一个对象可以是另一个对象的属性。
3、对象属性和方法的获取与调用都是通过点(.)操作符进行的。
4.更多的属性和方法需要我们自己去探索、去运用才能熟练掌握。
跟随我,一起继续学习,一起踏上wps (JSA)的攀登之旅。
#标题创作挑战#