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

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

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

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


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

核心概念

WPS对象就像"俄罗斯套娃"

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

1.1 工作簿对象常用操作

关键代码示例
javascript 复制代码
// 获取当前工作簿路径  
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 工作表对象常用操作

关键代码示例
javascript 复制代码
// 重命名活动工作表  
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 单元格对象常用操作

关键代码示例
javascript 复制代码
// 读取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 单元格复制与重定位

场景:将"订单表"的标题行复制到"汇总表"
javascript 复制代码
function 复制标题() {  
  let 订单表 = Sheets("订单表");  
  let 汇总表 = Sheets("汇总表");  

  // 复制A1:F1标题区域  
  订单表.Range("A1:F1").Copy();  

  // 粘贴到汇总表A1位置(保留格式)  
  汇总表.Range("A1").PasteSpecial();  

  // 清空剪贴板  
  Application.CutCopyMode = false;  
}  
重定位技巧
javascript 复制代码
// 从当前单元格向下偏移2行,向右偏移1列  
Range("A1").Offset(2, 1).Value2 = "新数据";  

// 动态扩展区域(从A1扩展到B3)  
Range("A1").Resize(3, 2).Value2 = [  
  ["姓名", "年龄"],  
  ["张三", 28],  
  ["李四", 32]  
];  

2.2 单元格偏移与尺寸调整

场景:在数据末尾追加新行
javascript 复制代码
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的单元格标为绿色
javascript 复制代码
function 标记高分() {  
  let 数据范围 = Range("B2:B100");  

  for (let cell of 数据范围) {  
    if (cell.Value2 > 90) {  
      cell.Interior.ColorIndex = 4;  // 绿色背景  
      cell.Font.Color = RGB(0, 0, 0); // 黑色字体  
    }  
  }  
}  
进阶技巧:清除颜色
javascript 复制代码
// 清除A列所有颜色  
Columns("A").Interior.ColorIndex = xlColorIndexNone;  

第二部分总结

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

课后练习

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

代码参考答案

javascript 复制代码
// 练习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; // 红色字体  
    }  
  }  
}  
相关推荐
q5673152333 分钟前
Go语言多线程爬虫与代理IP反爬
开发语言·爬虫·tcp/ip·golang
Chandler2436 分钟前
Go语言即时通讯系统 开发日志day1
开发语言·后端·golang
强化学习与机器人控制仿真1 小时前
openpi 入门教程
开发语言·人工智能·python·深度学习·神经网络·机器人·自动驾驶
运维@小兵1 小时前
vue访问后端接口,实现用户注册
前端·javascript·vue.js
雨汨1 小时前
web:InfiniteScroll 无限滚动
前端·javascript·vue.js
小盐巴小严2 小时前
正则表达式
javascript·正则表达式
明月看潮生2 小时前
青少年编程与数学 02-019 Rust 编程基础 08课题、字面量、运算符和表达式
开发语言·青少年编程·rust·编程与数学
天天打码2 小时前
Rspack:字节跳动自研 Web 构建工具-基于 Rust打造高性能前端工具链
开发语言·前端·javascript·rust·开源
Petrichorzncu2 小时前
Lua再学习
开发语言·学习·lua
AA-代码批发V哥2 小时前
正则表达式: 从基础到进阶的语法指南
java·开发语言·javascript·python·正则表达式