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