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

发布于:2025-03-28 ⋅ 阅读:(30) ⋅ 点赞:(0)

第二部分: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; // 红色字体  
    }  
  }  
}