百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

2、从零开始了解和使用WPS的js宏(JSA)之学习方法

myzbx 2025-09-03 05:24 13 浏览

对于初学者,没接触过JavaScript语句和vba的,可能理解起来有些困难。所以我推荐面向搜索编程,对于一些js语法和函数问题现学现用都可以找到答案。对于与WPS宏相关的一些问题,可以参考WPS开放平台中的开发文档、 docs.microsoft.com 网站的开发文档、搜索vba的一些实例即可解决。

首先是如何使用WPS开放平台中的开发文档。

从上一节的 1、从零开始了解和使用WPS的js宏(JSA)图1.1的宏编辑器界面,按F1打开WPS开放平台,选择开发文档,客户端开发,选择搜索栏下面的WPS 基础接口。

如图2.0

第一条是【从Visual Basic转到 JavaScript】,如果有点基础的话,看过这篇文档以后就可以上手操作了。

因为我是以表格为例,所以经常使用的就是图上的【表格 API 参考】。使用过VBA的朋友对这里面的对象应该都很熟悉,这些对象的属性和方法与VBA中的没什么不同,只是在使用过程中要注意语法问题。

关于JavaScript的学习教程,以头条搜索为例:

在搜索框输入:js 函数教程 w3cschool

或者输入:js 函数教程 菜鸟教程

网页出来后,在前面几条中选择非CSDN的网站即可。

如图2.1 选择第三条打开。这些网站都是针对初学者的,根据具体案例学习应该非常容易。

下面分析一下 上一篇 最后部分代码的内容 图1.6。

function 定义常量(){ return "返回常量"}
function 定义变量(){ return Application.Worksheets.Item("Sheet1").Range("a1").Value2}

如上代码,JSA 不能在函数体外定义变量常量和对象,所以定义常量和全局变量只能采取这个变通方法。

第一行代码直接使用函数返回定义的常量,这么做有两点原因:

1、定义一次全局使用,尤其是像Sheet这种工作表的名称,比如默认使用Sheet1,就可以在模块里定义这个函数,当Sheet1改名时,只要改这一个函数就行,而不用搜索全部代码进行修改。

2、JSA 宏编辑器看不到工作表(Worksheet)对象,Worksheet对象的CodeName是空值,无法在代码中直接引用对象。下面给出与VBA代码编辑器的对比:


从图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,在立即窗口,除了保护工作薄的语句,我还加了一条函数,这个函数测试工作薄结构是否被保护,最终得到 “工作簿已保护” 的显示。

第二行代码

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

使用单元格a1存储变量值,从而模仿定义全局变量的效果。

本节内容到此结束。从下一篇开始,我将从实例出发,逐步构建一个wps宏查询报表应用。这里面涉及到表格函数应用、SQL语句表格查询、js 语法等多方面的内容。

相关推荐

前端工程师养成计划 专区_前端工程师技能要求

前端工程师必修课本课程从最基本的概念开始讲起,步步深入,带领大家学习HTML、CSS样式基础知识,了解各种常用标签的意义以及基本用法,后半部分讲解CSS样式代码添加,为后面的案例课程打下基础。本课程让...

深入浅出虚拟 DOM 和 Diff 算法,及 Vue2 与 Vue3 中的区别

因为Diff算法,计算的就是虚拟DOM的差异,所以先铺垫一点点虚拟DOM,了解一下其结构,再来一层层揭开Diff算法的面纱,深入浅出,助你彻底弄懂Diff算法原理认识虚拟DOM虚拟...

css 布局简述_css布局的几种方式

本篇简单介绍了css布局体系。包括Flowlayout、display、floats、positionFlowlayout(NormalFlow)CSSFormattingContext...

dart系列之:HTML的专属领域,除了javascript之外,dart也可以

简介虽然dart可以同时用作客户端和服务器端,但是基本上dart还是用做flutter开发的基本语言而使用的。除了andorid和ios之外,web就是最常见和通用的平台了,dart也提供了对HTML...

原来隐藏一个DOM元素可以有这么多种方式,最后一种你肯定不知道

我们在日常编码的时候,隐藏一个dom元素有很多种方式,今天我们来盘点一下隐藏dom元素有哪些方式,最后一种,你绝对没有用过。display:none作为经常用来隐藏元素的css属性,di...

JavaScript精通到深入_javascript进阶书籍推荐

前几天教大家从入门到精通,当然仅靠那一篇文章是不足以带领大家精通JavaScript的,今天给大家带来第二讲!BOM和DOM简介BOM,BrowserObjectModel,浏览器对象模型。BO...

巧克力:从一朵花开始的华丽变身_巧克力花束教程视频

世界上几乎所有的巧克力产品,都出自四五家大公司大型工厂里的流水线。然而,“手工制作巧克力”正在成为一种潮流,吸引着越来越多的人沉醉其中。这些娇嫩的花朵,是你吃过的每一块巧克力的开始。可可花直接生长在...

browser-use:AI 驱动的浏览器自动化神器——DOM识别与交互详解

browser-use可以识别网页中可交互DOM内容,并能与之进行交互。本文将详细介绍browser-use实现这一核心功能的技术细节。一、可交互元素识别browser-use是通过DOMS...

HTML DOM Progress 对象_html中的对象

Progress对象Progress对象是HTML5新增的。Progress对象表示一个HTML<progress>元素。<progress>元素表示任务...

HTML DOM Script 对象_html document对象

Script对象Script对象表示一个HTML<script>元素。访问Script对象您可以使用getElementById()来访问<scrip...

虚拟DOM真的比操作原生DOM快吗?前端大神提供4个参考观点!收藏

尤雨溪:https://www.zhihu.com/question/31809713/answer/53544875VirtualDOM真的比操作原生DOM快吗?1.原生DOM操作v...

前沿|一种新的植入药物或可将HIV的预防时间持续一年

国外已经批准了一种叫做Truvada(中文名:特鲁瓦达)的药物用于HIV感染的暴露前预防。但是由于该药需要每天服用,因此有些人可能无法坚持,从而使得该药的预防效果降低。最近一项新的研究或许可以改变这种...

轻量级埋点sdk搭建,便捷更全面_埋点工具

引言借助埋点监控sdk,我们可以统计用户的点击,页面pv、uv,脚本错误、dom上报等关键信息等。一:项目初始化1.技术栈Tsrollup打包工具2.搭建项目npminit-ytsc--in...

China&#39;s Humanoid Robotics Race Heats Up as Tesla&#39;s Optimus Hits a Wall

TMTPOST--Tesla'sonce-hypedhumanoidrobotproject,Optimus,hashitasnag.Partsprocurementhas...

单机训练速度提升640倍!独家解读快手商业广告模型GPU训练平台Persia

【导读】:近期,快手宣布将在2020年春节前实现3亿DAU,快手商业化营收步伐也随之加速。快手从2018年“商业化元年”开始推行个性化的广告推荐。截止5月底,快手DAU已经突破2亿。随着用户和使用时长...