第二部分:WPS对象模型与核心操作
- WPS对象的属性、方法、集合
- 工作簿对象常用表达方式
- 工作表对象常用表达方式
- 单元格对象常用表达方式
- 单元格操作实战
- 单元格复制与重定位
- 单元格偏移与尺寸调整
- 颜色设置专题
- 索引颜色与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;
第二部分总结
- 核心口诀:
- 工作簿是文件,工作表是页签,单元格是数据点。
- 属性描述状态,方法执行动作,集合管理多个对象。
- 实战建议:
- 用
Offset和Resize动态定位数据区域。 - 用
ColorIndex快速配色,用RGB()实现个性化需求。
- 用
课后练习:
- 写一个宏,将当前工作表的A1单元格复制到所有工作表的A1位置。
- 用
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; // 红色字体 } }
}