WPS JS宏编程教程(从基础到进阶)--第二部分:WPS对象模型与核心操作

第二部分:WPS对象模型与核心操作

  1. WPS对象的属性、方法、集合
    • 工作簿对象常用表达方式
    • 工作表对象常用表达方式
    • 单元格对象常用表达方式
  2. 单元格操作实战
    • 单元格复制与重定位
    • 单元格偏移与尺寸调整
  3. 颜色设置专题
    • 索引颜色与RGB颜色
    • 按条件动态设置单元格颜色

第二部分:WPS对象模型与核心操作


1. WPS对象的属性、方法、集合

核心概念

WPS对象就像“俄罗斯套娃”

  • 工作簿(Workbook)工作表(Worksheet)单元格(Range)
  • 每个对象都有属性(描述特征)、方法(可执行的动作)、集合(多个同类对象的组合)。

1.1 工作簿对象常用操作

关键代码示例
// 获取当前工作簿路径  
let 当前路径 = ThisWorkbook.Path;  
MsgBox("当前文件保存在:" + 当前路径);  // 新建工作簿并保存  
function 新建工作簿() {  let 新工作簿 = Workbooks.Add();  新工作簿.SaveAs(当前路径 + "\\2024年数据.xlsx");  新工作簿.Close();  
}  // 遍历所有打开的工作簿  
for (let wb of Workbooks) {  Console.log("已打开的工作簿:" + wb.Name);  
}  
常用属性
属性作用示例
.Name获取工作簿名称ThisWorkbook.Name
.FullName获取完整路径Workbooks("工资表.xlsx").FullName
.Sheets获取所有工作表的集合ThisWorkbook.Sheets.Count(统计工作表数量)

1.2 工作表对象常用操作

关键代码示例
// 重命名活动工作表  
ActiveSheet.Name = "2024年数据";  // 隐藏指定工作表  
Sheets("备份数据").Visible = false;  // 批量删除空白工作表  
function 删除空白表() {  for (let sheet of Sheets) {  if (sheet.UsedRange.Count == 1) {  // 如果已用区域只有一个单元格  sheet.Delete();  }  }  
}  
常用方法
方法作用示例
.Copy()复制工作表Sheets("模板").Copy()
.Move()移动工作表Sheets("数据").Move(Sheets(1))(移动到最前)
.Protect()保护工作表ActiveSheet.Protect("123")

1.3 单元格对象常用操作

关键代码示例
// 读取A1单元格的值  
let 姓名 = Range("A1").Value2;  
MsgBox("当前用户:" + 姓名);  // 批量填充序号(A列1~100)  
Range("A1:A100").Value2 = [...Array(100).keys()].map(i => i + 1);  // 动态获取最后一行数据  
let 最后一行 = Cells(Rows.Count, 1).End(xlUp).Row;  
Console.log("最后一行是:" + 最后一行);  
常用属性
属性作用示例
.Row获取行号Range("C5").Row → 5
.Column获取列号Range("C5").Column → 3
.Formula设置公式Range("D2").Formula = "=SUM(B2:C2)"

2. 单元格操作实战

2.1 单元格复制与重定位

场景:将“订单表”的标题行复制到“汇总表”
function 复制标题() {  let 订单表 = Sheets("订单表");  let 汇总表 = Sheets("汇总表");  // 复制A1:F1标题区域  订单表.Range("A1:F1").Copy();  // 粘贴到汇总表A1位置(保留格式)  汇总表.Range("A1").PasteSpecial();  // 清空剪贴板  Application.CutCopyMode = false;  
}  
重定位技巧
// 从当前单元格向下偏移2行,向右偏移1列  
Range("A1").Offset(2, 1).Value2 = "新数据";  // 动态扩展区域(从A1扩展到B3)  
Range("A1").Resize(3, 2).Value2 = [  ["姓名", "年龄"],  ["张三", 28],  ["李四", 32]  
];  

2.2 单元格偏移与尺寸调整

场景:在数据末尾追加新行
function 添加新数据() {  let 最后一行 = Range("A" + Rows.Count).End(xlUp).Row;  let 新行 = 最后一行 + 1;  // 在A列最后一行下方写入新数据  Cells(新行, 1).Value2 = "王五";  Cells(新行, 2).Value2 = 25;  // 自动调整列宽  Columns("A:B").AutoFit();  
}  

3. 颜色设置专题

3.1 索引颜色 vs RGB颜色

类型特点示例
索引颜色预定义56种颜色,速度快Range("A1").Interior.ColorIndex = 3(红色)
RGB颜色自定义1600万种颜色,更灵活Range("A1").Interior.Color = RGB(255, 200, 0)(橙色)
颜色代码对照表

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


3.2 按条件动态设置颜色

场景:将成绩大于90的单元格标为绿色
function 标记高分() {  let 数据范围 = Range("B2:B100");  for (let cell of 数据范围) {  if (cell.Value2 > 90) {  cell.Interior.ColorIndex = 4;  // 绿色背景  cell.Font.Color = RGB(0, 0, 0); // 黑色字体  }  }  
}  
进阶技巧:清除颜色
// 清除A列所有颜色  
Columns("A").Interior.ColorIndex = xlColorIndexNone;  

第二部分总结

  • 核心口诀
    • 工作簿是文件,工作表是页签,单元格是数据点。
    • 属性描述状态,方法执行动作,集合管理多个对象。
  • 实战建议
    • OffsetResize动态定位数据区域。
    • ColorIndex快速配色,用RGB()实现个性化需求。

课后练习

  1. 写一个宏,将当前工作表的A1单元格复制到所有工作表的A1位置。
  2. for...of循环遍历B列,将负数标为红色。

代码参考答案

// 练习1:跨表复制A1内容  
function 跨表复制() {  let 源内容 = Range("A1").Value2;  for (let sheet of Sheets) {  sheet.Range("A1").Value2 = 源内容;  }  
}  // 练习2:标记负数  
function 标记负数() {  for (let cell of Range("B2:B100")) {  if (cell.Value2 < 0) {  cell.Font.ColorIndex = 3; // 红色字体  }  }  
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于DrissionPage的TB商品信息采集与可视化分析

一、项目背景 随着电子商务的快速发展,淘宝作为中国最大的电商平台之一,拥有海量的商品信息。这些数据对于市场分析、用户行为研究以及竞争情报收集具有重要意义。然而,由于淘宝的反爬虫机制和复杂的页面结构,直接获取商品信息并不容易。尤其是在电商行业高速发展的今天,商…

【003安卓开发方案调研】之ReactNative技术开发安卓

基于2025年最新行业动态和搜索资料&#xff0c;以下是针对国内使用React Native&#xff08;RN&#xff09;开发安卓应用的深度分析&#xff1a; 一、技术成熟度评估 1. 核心架构升级 新架构全面普及&#xff1a;2024年起&#xff0c;React Native的 新架构&#xff08;Fabri…

JS数组方法

数组方法 一、数组 JavaScript 数组的大小是可调整的&#xff0c;并且可以包含不同 数据类型。&#xff08;当不需要这些特性时&#xff0c;请使用 类型数组。&#xff09; 注&#xff1a;JavaScript 类型数组是类似数组的对象&#xff0c;它提供了一种在内存缓冲区中读取和写…

【一起学Rust | Tauri2.0框架】深入浅出 Tauri 2.0 应用调试:从新手到专家的蜕变

前言 Tauri 是一款备受瞩目的跨平台桌面应用开发框架&#xff0c;它允许开发者使用 Web 技术栈&#xff08;HTML、CSS、JavaScript&#xff09;构建高性能、安全的原生应用。Tauri 2.0 的发布带来了诸多令人兴奋的新特性和改进&#xff0c;进一步提升了开发体验和应用性能。然…

Python项目-基于Python的网络爬虫与数据可视化系统

1. 项目简介 在当今数据驱动的时代&#xff0c;网络爬虫和数据可视化已成为获取、分析和展示信息的重要工具。本文将详细介绍如何使用Python构建一个完整的网络爬虫与数据可视化系统&#xff0c;该系统能够自动从互联网收集数据&#xff0c;进行处理分析&#xff0c;并通过直观…

TCP/IP三次握手的过程,为什么要3次?

一&#xff1a;过程 第一次&#xff08;SYN&#xff09;&#xff1a; 客户端发送一个带有SYN标志的TCP报文段给服务器&#xff0c;设置SYN1&#xff0c;并携带初始序列号Seqx&#xff08;随机值&#xff09;&#xff0c;进入SYN_SENT状态。等待服务器相应。 第二次&#xff08…

消息队列性能比拼: Kafka vs RabbitMQ

本内容是对知名性能评测博主 Anton Putra Kafka vs RabbitMQ Performance 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 简介 在本视频中&#xff0c;我们将首先比较 Apache Kafka 和传统的 RabbitMQ。然后&#xff0c;在第二轮测试中&#xff0c;会将 Kaf…

打磨和修改:字帖自动生成

功能增加一些。 一个人和大语言模型对话的结果。 不过是重复性劳动&#xff0c;特别需要创意的地方还是不容易做到。

电脑干货:万能驱动--EasyDrv8

目录 万能驱动EasyDrv8 功能介绍 主程序界面 驱动解压与安装 PE环境支持 系统部署环境 桌面环境一键解决方案 万能驱动8电脑版是由IT天空出品的一款智能识别电脑硬件并自动安装驱动的工具&#xff0c;一般又称为it天空万能驱动&#xff0c;万能驱动vip版&#xff0c;简称…

LeetCode热题100JS(79/100)第十五天|347|295|121|55|45

347. 前 K 个高频元素 题目链接&#xff1a;347. 前 K 个高频元素 难度&#xff1a;中等 刷题状态&#xff1a;1刷 新知识&#xff1a; 解题过程 思考 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 没思路&#xff0c;看答案 题解分析 参考题解链接&#xff1a…

Sentinel 限流利器(功能以及源码解析)

Sentinel简介 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 资源 资源是…

子数组 之 logTrick算法,求解或,与,LCM,GCD

文章目录 gcd的问题最大公约数 求解子数组的&,|,lcm,gcd的最值or计数问题&#xff0c;如果采用暴力的做法&#xff0c;那么时间复杂度会来到o(n^2),其实在求解的过程中&#xff0c;会出现很多的结果不变的情况&#xff0c;所以我们就可以提前结束 存在一定的单调性&#x…

How to use pgbench to test performance for PostgreSQL?

pgbench 是一个用于测试 PostgreSQL 数据库性能的基准测试工具。通过模拟多个客户端并发执行 SQL 查询&#xff0c;它可以帮助你评估数据库的性能。以下是使用 pgbench 的基本步骤&#xff1a; 安装 pgbench pgbench 是 PostgreSQL 的一部分&#xff0c;因此在安装 PostgreSQ…

应用服务接口第二次请求一直pending问题

目录 一、问题背景二、问题排查过程三、解决方案四、总结 一、问题背景 升级内容发布到灰度环境&#xff0c;验证相关服务&#xff0c;查看接口调用日志&#xff0c;发现第一次请求正常&#xff0c;第二次相同接口请求就一直pending&#xff0c;其他服务也是如此 二、问题排查…

嵌入式八股RTOS与Linux---网络系统篇

前言 关于计网的什么TCP三次握手 几层模型啊TCP报文啥的不在这里讲,会单独分成一个计算机网络模块   这里主要介绍介绍lwip和socket FreeRTOS下的网络接口–移植LWIP 实际上FreeRTOS并不自带网络接口,我们一般会通过移植lwip协议栈让FreeRTOS可以通过网络接口收发数据,具体可…

推荐一款好看的 vue3 后台模板

SoybeanAdmin 项目简介 SoybeanAdmin 是一个基于最新前端技术栈的清新、优雅、高颜值且功能强大的后台管理模板。它采用 Vue3, Vite5, TypeScript, Pinia, NaiveUI 和 UnoCSS 构建&#xff0c;为开发者提供了一个现代化、高效且易于扩展的后台管理系统解决方案。 主要特点&am…

【django】1-1 django构建web程序的基础知识

文章目录 1 构建web应用的基础知识1.1 互联网相关的概念1.2 互联网协议DNS(域名系统)IP协议(互联网络协议)TCP(传输控制协议)HTTP(超文本传输协议)SSL(安全套接字层)TLS(传输层安全) 1.3 URL 2 web程序2.1 web程序的本质2.2 web框架的设计模式1.2.1 经典的MVC设计模式1.2.2 Dja…

【智能体】从一个聊天工作流了解LangGraph

1. 前言 这篇文章将从如何搭建一个带网络搜索功能的聊天机器人工作流&#xff0c;带你初步了解 LangGraph。 2. 前提条件 已搭建 Python 开发环境&#xff0c;使用 3.11 以上版本。 已熟悉 Python 基础语法。可参考&#xff1a;【LLM】Python 基础语法_llm python入门-CSDN博…

JAVA开发:实例成员与静态成员

判断Java中的实例成员与静态成员 在Java中&#xff0c;可以通过以下几种方式判断一个成员是实例成员还是静态成员&#xff1a; 1. 通过声明方式判断 静态成员使用static关键字修饰&#xff0c;实例成员不使用&#xff1a; public class MyClass {// 实例成员int instanceVa…

Softmax 回归 + 损失函数 + 图片分类数据集

Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型&#xff0c;是一个分类问题。 下面先解释一下分类和回归的区别&#xff1a; 简单来说&#xff0c;分类问题从回归的单输出变成了多输出&#xff0c;输出的个数等于类别的个数。 实际上&#xff0c;对于分…