JSA宏教程WPS表格常用内置对象——应用程序(Application)对象
zhezhongyun 2025-06-09 07:25 37 浏览
一、关于应用程序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)的登山之路。
相关推荐
- Python入门学习记录之一:变量_python怎么用变量
-
写这个,主要是对自己学习python知识的一个总结,也是加深自己的印象。变量(英文:variable),也叫标识符。在python中,变量的命名规则有以下三点:>变量名只能包含字母、数字和下划线...
- python变量命名规则——来自小白的总结
-
python是一个动态编译类编程语言,所以程序在运行前不需要如C语言的先行编译动作,因此也只有在程序运行过程中才能发现程序的问题。基于此,python的变量就有一定的命名规范。python作为当前热门...
- Python入门学习教程:第 2 章 变量与数据类型
-
2.1什么是变量?在编程中,变量就像一个存放数据的容器,它可以存储各种信息,并且这些信息可以被读取和修改。想象一下,变量就如同我们生活中的盒子,你可以把东西放进去,也可以随时拿出来看看,甚至可以换成...
- 绘制学术论文中的“三线表”具体指导
-
在科研过程中,大家用到最多的可能就是“三线表”。“三线表”,一般主要由三条横线构成,当然在变量名栏里也可以拆分单元格,出现更多的线。更重要的是,“三线表”也是一种数据记录规范,以“三线表”形式记录的数...
- Python基础语法知识--变量和数据类型
-
学习Python中的变量和数据类型至关重要,因为它们构成了Python编程的基石。以下是帮助您了解Python中的变量和数据类型的分步指南:1.变量:变量在Python中用于存储数据值。它们充...
- 一文搞懂 Python 中的所有标点符号
-
反引号`无任何作用。传说Python3中它被移除是因为和单引号字符'太相似。波浪号~(按位取反符号)~被称为取反或补码运算符。它放在我们想要取反的对象前面。如果放在一个整数n...
- Python变量类型和运算符_python中变量的含义
-
别再被小名词坑哭了:Python新手常犯的那些隐蔽错误,我用同事的真实bug拆给你看我记得有一次和同事张姐一起追查一个看似随机崩溃的脚本,最后发现罪魁祸首竟然是她把变量命名成了list。说实话...
- 从零开始:深入剖析 Spring Boot3 中配置文件的加载顺序
-
在当今的互联网软件开发领域,SpringBoot无疑是最为热门和广泛应用的框架之一。它以其强大的功能、便捷的开发体验,极大地提升了开发效率,成为众多开发者构建Web应用程序的首选。而在Spr...
- Python中下划线 ‘_’ 的用法,你知道几种
-
Python中下划线()是一个有特殊含义和用途的符号,它可以用来表示以下几种情况:1在解释器中,下划线(_)表示上一个表达式的值,可以用来进行快速计算或测试。例如:>>>2+...
- 解锁Shell编程:变量_shell $变量
-
引言:开启Shell编程大门Shell作为用户与Linux内核之间的桥梁,为我们提供了强大的命令行交互方式。它不仅能执行简单的文件操作、进程管理,还能通过编写脚本实现复杂的自动化任务。无论是...
- 一文学会Python的变量命名规则!_python的变量命名有哪些要求
-
目录1.变量的命名原则3.内置函数尽量不要做变量4.删除变量和垃圾回收机制5.结语1.变量的命名原则①由英文字母、_(下划线)、或中文开头②变量名称只能由英文字母、数字、下画线或中文字所组成。③英文字...
- 更可靠的Rust-语法篇-区分语句/表达式,略览if/loop/while/for
-
src/main.rs://函数定义fnadd(a:i32,b:i32)->i32{a+b//末尾表达式}fnmain(){leta:i3...
- C++第五课:变量的命名规则_c++中变量的命名规则
-
变量的命名不是想怎么起就怎么起的,而是有一套固定的规则的。具体规则:1.名字要合法:变量名必须是由字母、数字或下划线组成。例如:a,a1,a_1。2.开头不能是数字。例如:可以a1,但不能起1a。3....
- Rust编程-核心篇-不安全编程_rust安全性
-
Unsafe的必要性Rust的所有权系统和类型系统为我们提供了强大的安全保障,但在某些情况下,我们需要突破这些限制来:与C代码交互实现底层系统编程优化性能关键代码实现某些编译器无法验证的安全操作Rus...
- 探秘 Python 内存管理:背后的神奇机制
-
在编程的世界里,内存管理就如同幕后的精密操控者,确保程序的高效运行。Python作为一种广泛使用的编程语言,其内存管理机制既巧妙又复杂,为开发者们提供了便利的同时,也展现了强大的底层控制能力。一、P...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- opacity 属性 (32)
- transition 属性 (33)
- 1-1. 变量声明 (31)
