美烦资源网

专注技术文章分享,涵盖编程教程、IT 资源与前沿资讯

JSA宏教程WPS表格常用内置对象——应用程序(Application)对象

一、关于应用程序Application对象

Application对象就是一个运行着的WPS表格(即ET)应用程序,它是整个应用程序根对象,在它之上没有其他程序对象了。

ET在WPS的文件夹中的图标如下:

在WPS表格运行过程中,在任务管理器中的图标也是如上图所述。

注意:不要认为Application对象是WPS程序运行时产生的顶层对象,而是WPS表格程序的运行时的顶层对象。WPS程序在运行时,可以同时在WPS程序框架之下运行表格、PPT、文档等等。

二、常用属性

Application对象的常用属性(不常用的就不列出来了)列表如下(本表摘自WPS开放平台):

名称

说明

ActiveCell

返回一个 Range 对象,该对象代表活动窗口(顶部窗口)或指定窗口中的活动单元格。如果窗口中没有显示工作表,此属性无效。只读。

Selection

为 Application 对象返回在活动窗口中选定的对象。

Cells

返回一个 Range 对象,该对象代表活动工作表中的所有单元格。如果活动文档不是工作表,则此属性无效。

Rows

返回一个 Range 对象,它代表活动工作表中的所有行。如果活动文档不是工作表,则 Rows 属性失效。Range 对象,只读。

Columns

返回一个 Range对象,它代表活动工作表中的所有列。如果活动文档不是工作表,则 Columns 属性无效。

ActiveSheet

返回一个对象,它代表活动工作簿中或指定的窗口或工作簿中的活动工作表(最上面的工作表)。如果没有活动的工作表,则返回 null

Worksheets

对于 Application对象,返回一个 Sheets集合,它代表活动工作簿中的所有工作表。对于 Workbook对象,返回一个 Sheets集合,它代表指定工作簿中的所有工作表。Sheets对象,只读。

ActiveWorkbook

返回一个 Workbook 对象,该对象代表活动窗口(顶部窗口)中的工作簿。只读。如果没有打开的窗口,或者“信息”窗口或“剪贴板”窗口为活动窗口,则返回 null

Workbooks

返回一个 Workbooks 集合,该集合表示所有打开的工作簿。只读。

Name

返回一个代表对象名称的 String 值。

Names

返回一个 Names 集合,该集合代表活动工作簿中的所有名称。只读 Names 对象。

Build

返回 ET 内部版本号。Number 类型,只读。

Caption

返回或设置一个 String 值,它代表出现在 ET 主窗口标题栏中显示的名称。

Path

返回一个 String 值,它代表应用程序的完整路径,不包括末尾的分隔符和应用程序名称。

Version

返回一个 String 值,它代表 ET 版本号。

小编这里将上表进行了划分。分别按照工作表、工作簿、对象本身属性这三个维度进行划分,方便大家容易记忆与理解。

三、常用方法

Application对象的常用方法(不常用的就不列出来了)列表如下(本表摘自WPS开放平台):

名称

说明

Evaluate

将一个 ET 名称转换为一个对象或者一个值。

Goto

选定任意工作簿中的任意区域,并且如果该工作簿未处于活动状态,就激活该工作簿。

InputBox

显示一个接收用户输入的对话框。返回此对话框中输入的信息。

Quit

退出ET

Run

运行一个宏或者调用一个函数。该方法可用于运行宏编辑器编写的宏,或者运行 DLL 或 XLL 中的函数。

四、练习

练习一、当某“启用了宏的工作簿文件”打开的时候对WPS的表格版本进行对比,如果版本低于12(WPS的版本号12也是当前最新版本号)或者内部版本号低于某个版本(这里假定是17133版本,实事上这个版本是最最新版本,但为了有演示效果,暂设置这个版),跳出提示:版本过低,本宏表格需要高级版本,先去升级程序版本。待用户点击确认后,退出WPS表格。

要解决这个练习,我们需要:

1、要用到Application对象的本身的两个属性:一个是Build属性,另一个是Version属性。

Build属性返回的是WPS表格的版本号,而非内部版本号;

Version属性返回的是内部版本号。

比如我的WPS表格的版本号是这样的:

2、Application对象的WorkbookOpen事件。事件如何来的呢?当我们每次对表格进行一次打开、关闭、点击等等这些行为都会引发对应对象的相应事件,比如打开事件、关闭事件、点击事件。

事件是我们进行JSA编程,智能化的一个大前提。

JSA里的任何对象都有事件,利用好事件,对于我们JSA宏来说,将是一大利器。

如何设置事件?

第一步,打开WPS宏编辑器

第二步,选择事件,我们这里需要选择WorkbookOpen事件

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:图小了,内容看得不太清楚,但是基本演示的效果还是可以看清楚的,我现在苦恼的是怎么把这个文件的代码改回来,好能回到正常演示的轨道上来。)


练习2:当表格打开时,1、获取当前打开的表格的文件名称,并在A8单元格中显示;其中拥有的工作表数量,并在A9单元格中显示;2、在第一个工作表的A10单元格中输入“Hello,WPS JS宏!”。

因为练习1的时候把演示文档搞的没办法进入到WPS宏编辑环境了,小编这里只能再重新开启一个新的工作表进行本题练习了。

与练习1一样,要实现这个功能,需要Application对象的以下属性。

  • ActiveWorkbook:用来获取当前打开的工作簿对象。
  • Worksheets:用来获取当前工作簿的所有工作表

事件:

  • WorkbookOpen:工作簿打开事件,用来根据事件触发程序代码。

要在工作表的某个单元格中输入内容,则还需要工作表对象的Range属性。这个属性非常重要,在以后的工作中,几乎无处不用。虽然不是本期的内容,但本期会提前讲到。

  • Range:用来在单元格中输入内容。

以及工作簿的属性:

  • Name:用来获取打开的工作簿的属性。
  • Count:用来获取工作簿中工作表的数量

同样,像练习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因为不需要文件打开时运行,因此这里我们就不需要打开事件了。

要完成这个练习,我们需要用到Application对象的以下属性和方法:

属性:

  • ActiveWorkbook:用来获取当前打开的工作簿对象。

方法:

  • InputBox:弹出对话框,提示用户输入内容。

工作表对象的属性:

  • Range:用来在单元格中输入内容。

工作簿对象的属性:

  • ActiveSheet:用来获取当前活动工作表。

代码如下。

function InputSomeText()
{
	let str;//变量,用来存贮用户输入的内容
	str = Application.InputBox("请输入一句祝福话语,以此鼓励自己!","用户录入");
	Application.ActiveWorkbook.ActiveSheet.Range("C15").Value2 = str;
}

运行效果:

上述动图操作运行宏之一的方法:“开发工具”——>“运行宏”——>选择要运行的宏,再点击运行。

从上述演示来看,在进行编写相关代码的时候,需要注意的地方

1、当第一个对象的层次较高,想要得到较低层次的对象,需要逐级向下取得对象。

2、对象是可以作为其另一个对象的属性的。

3、对象的属性、方法的获取、调用都是通过圆点(.)运算符进行的。

4、更多的属性和方法,需要我们自己去探索、去运用才能达到熟练。


关注我,持续共同学习,一起踏上wps宏(JSA)的登山之路。


#头条创作挑战赛#

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言