《Excel VBA与VSTO基础实战指南》目录
第 1 章 自动化操作 .................................................................................... 1
1.1 自动化操作的价值 .................................................................................................... 1
1.1.1 自动化操作的必要性 .................................................................................... 1
1.1.2 实现自动化操作的两个途径 ....................................................................... 3
1.2 利用宏简化日常工作 ............................................................................................... 3
1.2.1 三分钟学会录制宏 ....................................................................................... 4
1.2.2 执行宏的方法 ................................................................................................ 7
1.2.3 两种方法读懂宏代码 ................................................................................... 7
1.2.4 宏的优缺点分析 .......................................................................................... 10
1.2.5 如何发挥宏的长处 ...................................................................................... 11
1.3 使用 VBA 强化 Excel 功能.................................................................................... 12
1.3.1 追根溯源:什么是 VBA ............................................................................ 12
1.3.2 知己知彼:解析 VBA 的优缺点 .............................................................. 13
1.3.3 窥斑见豹:从一个案例初识 VBA ........................................................... 13
1.4 Excel VBA 的发展前景 ............................................................................................ 15
1.4.1 简化工作 ....................................................................................................... 15
1.4.2 开拓专业 ....................................................................................................... 16
1.5 课后思考.................................................................................................................. 16
第 2 章 代码应用基础 ....................................................................................... 17
2.1 区分 VBE 代码窗口 ................................................................................................. 17
2.1.1 认识 VBE 窗口 .............................................................................................. 17
2.1.2 最常用的代码存放区:标准模块 .............................................................. 19
2.1.3 工作簿事件代码窗口:ThisWorkbook .................................................... 23
2.1.4 工作表事件代码窗口:Sheet1 .................................................................. 23
2.1.5 窗体代码窗口:UserForm1 ....................................................................... 24
2.1.6 创建隐藏对象的代码窗口:类模块 ........................................................ 24
2.2 录入代码.................................................................................................................. 25
2.2.1 代码的存放位置 ........................................................................................... 25
2.2.2 写入代码的方式 ........................................................................................... 25
2.2.3 提升代码的可读性 ....................................................................................... 27
2.2.4 调用快速信息 ............................................................................................... 31
2.3 四种代码执行方式 .................................................................................................. 32
2.3.1 调用快捷键 ................................................................................................... 32
2.3.2 单击按钮执行 ............................................................................................... 33
2.3.3 自动执行 ....................................................................................................... 34
2.3.4 在公式中调用 ............................................................................................... 35
2.4 保存代码.................................................................................................................. 36
2.4.1 修改文件的保存格式 .................................................................................. 36
2.4.2 一劳永逸 ....................................................................................................... 37
2.5 让代码畅通无阻 ...................................................................................................... 37
2.5.1 调整宏的安全等级 ....................................................................................... 38
2.5.2 添加受信任位置 ........................................................................................... 38
2.5.3 将代码封装为加载项 ................................................................................... 39
2.6 反复调用相同代码 ................................................................................................... 39
2.6.1 使用个人宏工作簿 ....................................................................................... 39
2.6.2 加载宏 ........................................................................................................... 40
2.6.3 加载项 ........................................................................................................... 40
2.7 课后思考.................................................................................................................. 40
第 3 章 从概念开始认识 VBA ........................................................................... 42
3.1 认识过程.................................................................................................................. 42
3.1.1 过程的分类 ................................................................................................... 42
3.1.2 Sub 过程的基本语法 .................................................................................... 42
3.1.3 Sub 过程的命名要求 .................................................................................... 44
3.1.4 Sub 过程的调用方法与访问限制 .............................................................. 45
3.1.5 过程的执行顺序 .......................................................................................... 46
3.1.6 过程的递归 ................................................................................................... 48
3.2 关于参数.................................................................................................................. 49
3.2.1 参数的存在价值 ........................................................................................... 49
3.2.2 过程名称中的参数 ....................................................................................... 49
3.2.3 参数的赋值方式 ........................................................................................... 50
3.2.4 可选参数与必选参数 ................................................................................... 52
3.2.5 代码中的参数 ............................................................................................... 53
3.3 理解对象.................................................................................................................. 54
3.3.1 什么是对象 ................................................................................................... 54
3.3.2 对象的引用层次 ........................................................................................... 55
3.4 对象的属性与方法 .................................................................................................. 56
3.4.1 认识属性与方法 ............................................................................................ 56
3.4.2 自动调用属性与方法 ................................................................................... 57
3.4.3 怎样才算完整的 VBA 语句 ........................................................................ 58
3.5 对象的事件 ............................................................................................................. 59
3.5.1 什么是事件 .................................................................................................. 59
3.5.2 事件的存在价值 ........................................................................................... 60
3.5.3 事件的分类与代码录入方式 ..................................................................... 60
3.5.4 事件的参数 ................................................................................................... 62
3.6 课后思考.................................................................................................................. 63
第 4 章 对象及其层次结构 ................................................................................. 65
4.1 查看所有对象 .......................................................................................................... 65
4.1.1 从对象浏览器查看对象 ................................................................................ 65
4.1.2 从帮助中调用对象的详细信息 ................................................................... 65
4.2 对象的层次与引用方式 ........................................................................................... 67
4.2.1 对象的层次 ................................................................................................... 67
4.2.2 使用对象名称引用对象 ................................................................................ 67
4.2.3 使用复数形式表示对象集合 ....................................................................... 68
4.2.4 使用序号参数引用集合中的子对象 .......................................................... 69
4.2.5 引用子对象 ................................................................................................... 70
4.2.6 引用活动对象 ............................................................................................... 70
4.2.7 引用父对象 ................................................................................................... 71
4.2.8 利用 WITH 语句引用重复出现的对象 ................................................... 72
4.3 Range 对象 ................................................................................................................ 74
4.3.1 Range("A1")引用方式 .................................................................................. 74
4.3.2 Cells(1,1)引用方式 ....................................................................................... 76
4.3.3 [A1]引用方式 ................................................................................................ 77
4.3.4 活动单元格:ActiveCell ............................................................................. 78
4.3.5 屏幕坐标下的单元格:RangeFromPoint ................................................. 79
4.3.6 选区:Selection、RangeSelection ............................................................. 80
4.3.7 已用区域:UsedRange ................................................................................ 81
4.3.8 当前区域:CurrentRegion ........................................................................... 83
4.3.9 按条件引用区域:SpecialCells .................................................................. 83
4.3.10 模拟 End+方向键产生的单元格:End .................................................... 86
4.3.11 按偏移量重置区域引用:Offset ............................................................... 88
4.3.12 按宽度与高度重置区域:Resize .............................................................. 90
4.3.13 引用多区域的合集:Union ........................................................................ 91
4.3.14 引用多区域的交集:Intersect .................................................................. 92
4.4 图形对象....................................................................................................................... 95
4.4.1 Shapes 对象与子对象 .................................................................................. 95
4.4.2 图形对象的名称 ............................................................................................ 95
4.4.3 DrawingObjects .............................................................................................. 96
4.4.4 图形对象的类别子集 .................................................................................... 97
4.5 表对象 .......................................................................................................................... 98
4.5.1 表的合集与子对象 ........................................................................................ 98
4.5.2 表对象的分类 ............................................................................................... 98
4.5.3 活动表 ........................................................................................................... 99
4.5.4 隐藏工作表的特性 ...................................................................................... 100
4.5.5 引用名字为数值的工作表的技巧 ............................................................ 100
4.6 工作簿对象 ............................................................................................................... 101
4.6.1 工作簿合集与子对象 ................................................................................. 101
4.6.2 活动工作簿 ................................................................................................. 101
4.6.3 关于后缀名 ................................................................................................. 102
4.6.4 关于工作簿格式 ........................................................................................ 103
4.7 Excel 应用程序对象 .............................................................................................. 103
4.7.1 Excel 的顶层对象:Application .............................................................. 104
4.7.2 调用子对象时可以省略 Application 吗 ............................................... 104
4.7.3 不同版本的 Excel 之间的差异 ............................................................... 104
4.8 课后思考................................................................................................................... 105
第 5 章 揭密数据类型与变量、常量 ............................................................... 106
5.1 数据类型..................................................................................................................... 106
5.1.1 区分数据类型的必要性 .............................................................................. 106
5.1.2 数据类型的分类 ........................................................................................... 107
5.1.3 转换数据类型 ................................................................................................ 110
5.2 定义变量..................................................................................................................... 112
5.2.1 变量的用途 ................................................................................................... 112
5.2.2 定义变量的方法 .......................................................................................... 113
5.2.3 变量的命名规则 .......................................................................................... 114
5.2.4 变量的作用域 ............................................................................................. 115
5.2.5 变量的生命周期 ......................................................................................... 117
5.2.6 静态变量与动态变量的分别 .................................................................... 118
5.2.7 声明对象变量 .............................................................................................. 119
5.2.8 对象变量的初始化与释放 ........................................................................ 121
5.3 定义常量................................................................................................................... 122
5.3.1 常量的用途 .................................................................................................. 122
5.3.2 常量的定义方式 .......................................................................................... 122
5.3.3 变量与常量的异同分析 ............................................................................ 123
5.4 课后思考.................................................................................................................... 123
第 6 章 条件语句与循环语句 ........................................................................... 125
6.1 If 语句解析 ............................................................................................................. 125
6.1.1 条件语句的重要性 ...................................................................................... 125
6.1.2 If...Then...Else 的单行模式 ......................................................................... 126
6.1.3 And、Or 和 Not 在条件语句中的作用 .................................................. 127
6.1.4 案例解析:指定工作簿的最后开启日期 ............................................... 128
6.1.5 If...Then...Else 的块形式 ............................................................................. 129
6.1.6 块形式的应用案例:创建日期批注 ........................................................ 130
6.1.7 嵌套使用 If 语句 .......................................................................................... 132
6.1.8 If 语句的常见错误与防错之法 ................................................................... 138
6.2 Select Case 语句解析 ................................................................................................ 140
6.2.1 Select Case 语句的价值 ................................................................................ 140
6.2.2 Select Case 基本语法 .................................................................................... 140
6.2.3 多条件应用案例 .............................................................................................142
6.3 IIf 函数 ........................................................................................................................ 145
6.3.1 IIf 函数语法解析 .......................................................................................... 146
6.3.2 IIf 函数案例应用:判断 Excel 的版本号 ................................................ 146
6.3.3 IIf 函数的优缺点 .......................................................................................... 147
6.4 For Next 语句解析 .................................................................................................... 147
6.4.1 循环语句的作用 .......................................................................................... 147
6.4.2 For Next 语句基本语法 ............................................................................... 148
6.4.3 步长值对循环结果的影响 ......................................................................... 149
6.4.4 For Next 循环语句应用案例 ......................................................................149
6.5 For Each…Next 语句解析 ....................................................................................... 153
6.5.1 遍历对象集合 ............................................................................................. 153
6.5.2 For Each…Next 语句基本语法 ................................................................... 153
6.5.3 For Each…Next 语句应用案例:定位大于某值的单元格 ..................... 154
6.6 Do Loop 语句解析 .................................................................................................... 156
6.6.1 Do Loop 语法分析 .......................................................................................... 156
6.6.2 Do Loop 语法一应用 ..................................................................................... 158
6.6.3 Do Loop 语法二应用 ..................................................................................... 161
6.6.4 Do Loop 语法三应用 ..................................................................................... 162
6.6.5 Do Loop 语法四应用 ..................................................................................... 163
6.6.6 总结三种循环语句的优缺点 ...................................................................... 166
6.7 课后思考..................................................................................................................... 166
第 7 章 四类常见对象的应用案例 .................................................................. 168
7.1 单元格对象 ................................................................................................................. 168
7.1.1 选择单元格 ...................................................................................................... 168
7.1.2 筛选与复制区域的值 ..................................................................................... 169
7.1.3 多区域复制 ...................................................................................................... 171
7.1.4 选择性粘贴数据 ............................................................................................ 172
7.1.5 重置已用数据区域 ........................................................................................ 175
7.1.6 查找所有成绩为 100 的单元格 ................................................................. 177
7.1.7 将表示平方米和立方米后面的 2 和 3 设为上标 ................................. 178
7.1.8 合并相邻且相同的单元格 .......................................................................... 180
7.1.9 按行合并且保留所有数据 .......................................................................... 182
7.1.10 隔行插入行 .................................................................................................. 183
7.1.11 标示选区中的重复值 ................................................................................ 184
7.2 图形对象..................................................................................................................... 186
7.2.1 批量导入图片与图片名称 .......................................................................... 186
7.2.2 统一表中所有图片大小及对齐图片 ......................................................... 189
7.2.3 插入图片到选区中 ....................................................................................... 190
7.2.4 插入带图片背景的批注 .............................................................................. 192
7.3 工作表对象 ................................................................................................................ 194
7.3.1 显示所有隐藏的工作表 .............................................................................. 194
7.3.2 创建以本月每日日期命名的工作表 ......................................................... 195
7.3.3 保护所有公式 ............................................................................................. 196
7.3.4 批量重命名表 ............................................................................................. 198
7.3.5 查找所有工作表中有循环引用的单元格 ............................................... 199
7.3.6 对职工表按学历排序 .................................................................................. 200
7.3.7 创建工作表目录 .......................................................................................... 202
7.4 工作簿对象 ............................................................................................................... 204
7.4.1 打开带密码且带有自动宏的工作簿 ........................................................ 204
7.4.2 另存工作簿且以今天的日期命名 ............................................................ 204
7.4.3 将外部链接转换成值 .................................................................................. 205
7.4.4 关闭工作簿且不保存修改内容 ................................................................ 206
7.4.5 定时保存且备份工作簿 ............................................................................. 207
7.4.6 重命名活动工作簿 ..................................................................................... 208
7.5 课后思考..................................................................................................................... 211
第 8 章 深入剖析 VBA 的各种事件 .................................................................... 212
8.1 事件的级别与顺序 ................................................................................................... 212
8.1.1 事件的级别与代码保存位置 ..................................................................... 212
8.1.2 事件的执行方式 .......................................................................................... 214
8.1.3 事件的执行顺序 .......................................................................................... 215
8.2 禁用与启用事件 ...................................................................................................... 215
8.2.1 临时关闭事件 ............................................................................................. 215
8.2.2 防止事件的连锁反应 ................................................................................. 216
8.3 工作表事件详解 ....................................................................................................... 217
8.3.1 工作表事件列表 .......................................................................................... 217
8.3.2 Change 事件的特例 ...................................................................................... 218
8.3.3 事件案例:激活工作表时验证访问权限 ................................................ 219
8.3.4 事件案例:自动标示当前行的背景 ......................................................... 220
8.3.5 事件案例:双击单元格时选中所有相同值 ............................................ 222
8.3.6 事件案例:在特定区域右击单元格时产生工作表目录 ...................... 223
8.3.7 事件案例:输入表达式时在右列自动返回计算结果 ........................... 224
8.3.8 事件案例:单击目录时可打开隐藏的工作表 ....................................... 225
8.3.9 事件案例:实时保护已录入数据的单元格 ........................................... 226
8.3.10 事件案例:在状态栏显示当前科目的不及格人数............................. 227
8.3.11 事件案例:通过数据有效性的下拉列表调用对应的图片 ................ 228
8.4 工作簿事件详解 ....................................................................................................... 229
8.4.1 工作簿事件列表 .......................................................................................... 230
8.4.2 事件案例:记录工作簿打开次数 ............................................................. 231
8.4.3 事件案例:显示活动工作表中的产量达标率 ....................................... 232
8.4.4 事件案例:打印数据前检查资料是否填写完整 ....................................234
8.4.5 事件案例:保存工作簿时更新工作表目录 ............................................235
8.4.6 事件案例:新建工作表时调用模板格式 ................................................ 236
8.4.7 事件案例:禁止修改总表名称 ................................................................. 237
8.4.8 事件案例:新建图表时自动设置为阴影、圆角 ................................. 238
8.5 应用程序级事件详解 ............................................................................................ 239
8.5.1 应用程序与类 ............................................................................................. 239
8.5.2 事件案例:打开任意工作簿时创建工作表目录 ................................ 239
8.5.3 事件案例:新建工作簿时自动保存 ...................................................... 241
8.6 按时间执行代码 .................................................................................................... 242
8.6.1 OnKey 方法的语法分析 ........................................................................... 243
8.6.2 创建计划任务 ........................................................................................... 243
8.7 课后思考................................................................................................................ 244
第 9 章 处理代码错误 ..................................................................................... 245
9.1 代码错误类型分析 ................................................................................................ 245
9.1.1 版本问题 ..................................................................................................... 245
9.1.2 参数赋值不当 ............................................................................................. 245
9.1.3 变量定义不准确 .......................................................................................... 247
9.1.4 对象不存在 ................................................................................................. 247
9.2 错误处理语句 ........................................................................................................ 248
9.2.1 详解 Err 对象 .............................................................................................. 249
9.2.2 Error 函数详解 ............................................................................................ 250
9.2.3 On Error Resume Next 语句 ....................................................................... 250
9.2.4 On Error GoTo Line 语句 .......................................................................... 252
9.2.5 On Error GoTo 0 语句 ................................................................................. 254
9.2.6 Gosub...Return 语句 ................................................................................... ...254
9.3 案例应用................................................................................................................ .....258
9.3.1 处理错误的常规思路 .................................................................................. ..258
9.3.2 案例应用:按条件定位单元格 .................................................................. 259
9.3.3 案例应用:根据选区的文件名批量导入图片 ........................................ 262
9.3.4 案例应用:一键屏蔽错误值 ..................................................................... 264
9.4 课后思考.................................................................................................................... 265
第 10 章 使用数组提升程序效率 ..................................................................... 267
10.1 基本概念 ................................................................................................................ 267
10.1.1 何为数组 ................................................................................................... 267
10.1.2 数组的特点 ............................................................................................... 267
10.1.3 一维数组 ................................................................................................... 268
10.1.4 二维数组 ................................................................................................... 270
10.1.5 数组的参数 ............................................................................................... 271
10.1.6 声明数组变量 ........................................................................................... 272
10.1.7 动态数组与静态数组的分别 ................................................................. 275
10.1.8 释放动态数组的存储空间 ..................................................................... 280
10.2 数组函数 ............................................................................................................... 281
10.2.1 用函数创建数组 ...................................................................................... 281
10.2.2 获取数组元素 ......................................................................................... 282
10.2.3 判断变量是否为数组 ............................................................................. 283
10.2.4 转置数组 .................................................................................................. 283
10.2.5 获取数组的上标与下标 ......................................................................... 285
10.2.6 转换文本与数组 ...................................................................................... 286
10.2.7 筛选数组 .................................................................................................... 288
10.3 案例分析 ................................................................................................................ 289
10.3.1 将指定区域的单词统一为首字母大写 ................................................ 289
10.3.2 罗列不及格学生姓名、科目和成绩 .................................................... 290
10.3.3 将字符串合并到区域 .............................................................................. 292
10.3.4 将职员表按学历拆分成多个工作表 ................................................... 294
10.3.5 将选区的数据在文本与数值间互换 ................................................... 297
10.3.6 获取两列数据的相同项 ........................................................................ 298
10.3.7 罗列至少三科不及格的学生姓名 ....................................................... 300
10.4 课后思考 ............................................................................................................. 302
第 11 章 集合与字典的应用 ........................................................................... 303
11.1 Collection:集合 .................................................................................................... 303
11.1.1 集合的特性 ............................................................................................... 303
11.1.2 集合的语法 ............................................................................................... 304
11.1.3 使用集合获取区域中的不重复值 ........................................................... 307
11.1.4 罗列 B 列重复出现的身份证号码 .......................................................... 308
11.2 Dictionary:字典 .................................................................................................... 310
11.2.1 字典对象的前期绑定和后期绑定 ........................................................... 310
11.2.2 字典的特点 ............................................................................................... 312
11.2.3 字典的属性与方法 .................................................................................... 312
11.2.4 获取选区中的唯一值 ................................................................................ 317
11.2.5 对采购表分类求和 .................................................................................... 318
11.2.6 对采购表分类计数 .................................................................................... 319
11.2.7 对产量表按组别和产品分类统计 ........................................................... 320
11.3 课后思考 .......................................................................................................... 321
第 12 章 设计程序窗体 ................................................................................... 323
12.1 窗体与控件简介 ................................................................................................ 323
12.1.1 窗体的功能 ............................................................................................... 323
12.1.2 创建与运行 UserForm 对象 .................................................................. 325
12.1.3 使用工具箱 ............................................................................................... 326
12.1.4 标签控件 ................................................................................................... 329
12.1.5 文本框控件 ............................................................................................... 329
12.1.6 命令控钮 ................................................................................................... 329
12.1.7 复合框 ....................................................................................................... 330
12.1.8 列表框 ....................................................................................................... 330
12.1.9 复选框 ....................................................................................................... 331
12.1.10 选项按钮 ................................................................................................. 331
12.1.11 框架 ........................................................................................................ 331
12.1.12 切换按钮 ................................................................................................. 332
12.1.13 多页控件 ................................................................................................. 333
12.1.14 滚动条 ..................................................................................................... 334
12.1.15 图像控件 ................................................................................................. 334
12.1.16 Flash 控件 ............................................................................................... 334
12.2 设置属性 ............................................................................................................. 335
12.2.1 属性窗口的用途 ........................................................................................ 335
12.2.2 设置属性的两种方式 ............................................................................... 336
12.2.3 文本框属性 ............................................................................................... 338
12.2.4 命令按钮属性 ........................................................................................... 341
12.2.5 复选框属性 ............................................................................................... 343
12.2.6 列表框属性 ............................................................................................... 345
12.2.7 复合框属性 ............................................................................................... 350
12.2.8 图像控件属性 ........................................................................................... 353
12.2.9 Flash 控件属性 ......................................................................................... 354
12.2.10 批量设置控件的属性 ............................................................................. 354
12.3 窗体与控件的事件 .............................................................................................. 355
12.3.1 UserForm 对象的事件 ............................................................................. 355
12.3.2 控件的事件 ............................................................................................... 356
12.4 窗体应用实战 ...................................................................................................... 366
12.4.1 开发多工作表查询窗体 ........................................................................... 366
12.4.2 开发多工作表快速录入面板 .................................................................. 369
12.4.3 以指定名称批量新建或复制工作表 ..................................................... 371
12.5 课后思考 ............................................................................................................. 375
第 13 章 定义 Ribbon 功能区选项卡 .................................................................. 377
13.1 功能区选项卡开发基础 ....................................................................................... 377
13.1.1 Ribbon 的特点 .......................................................................................... 377
13.1.2 功能区的组件图示 .................................................................................... 377
13.1.3 手动定制功能区 ........................................................................................ 378
13.1.4 认识 Ribbon 代码编辑器 ......................................................................... 378
13.1.5 获取内置按钮图标 .................................................................................... 379
13.2 Ribbon 定制之语法分析 ..................................................................................... 380
13.2.1 功能区代码的结构 ................................................................................... 380
13.2.2 显示与隐藏功能区:ribbon.................................................................... 382
13.2.3 创建新选项卡:tab .................................................................................. 382
13.2.4 创建新组:group ..................................................................................... 384
13.2.5 创建对话框启动器:dialogBoxLauncher ............................................ 385
13.2.6 在组中添加命令按钮:button .............................................................. 387
13.2.7 创建切换按钮:toggleButton ................................................................. 389
13.2.8 创建弹出式菜单:menu........................................................................... 390
13.2.9 创建下拉列表:dropDown ...................................................................... 391
13.2.10 创建编辑框:editBox ............................................................................. 393
13.2.11 锁定或隐藏内置功能 .............................................................................. 394
13.3 使用回调函数强化功能区 ................................................................................... 395
13.3.1 为什么需要使用回调函数 ........................................................................ 395
13.3.2 回调函数详解 ........................................................................................... 395
13.3.3 创建 1 到 3 号才能使用的按钮 ............................................................ 397
13.3.4 创建按下与弹起时自动切换图标的按钮 ............................................. 398
13.3.5 在功能区中快速查找 ............................................................................... 400
13.3.6 在组的标签处显示日期及问候语 .......................................................... 403
13.3.7 调用大图片创建下拉菜单 ...................................................................... 404
13.4 使用模板 ............................................................................................................. 408
13.4.1 模板的重要性 ........................................................................................... 408
13.4.2 模板的使用方法 ...................................................................................... 408
13.4.3 制作两个模板 .......................................................................................... 408
13.5 课后思考 ............................................................................................................. 412
第 14 章 开发通用插件 .................................................................................. 413
14.1 插件的分类 .......................................................................................................... 413
14.1.1 什么是插件 ............................................................................................... 413
14.1.2 插件的分类 ............................................................................................... 413
14.1.3 开发插件和编写普通代码的分别 ......................................................... 414
14.2 漫谈加载宏 .......................................................................................................... 414
14.2.1 加载宏工作簿的特点 ................................................................................ 414
14.2.2 加载宏管理器 ........................................................................................... 415
14.2.3 加载宏的使用方法 .................................................................................. 416
14.2.4 加载宏的便利性 ...................................................................................... 417
14.3 制作工作表批量重命名插件 ............................................................................. 417
14.3.1 开发通用插件的基本步骤 ...................................................................... 417
14.3.2 罗列插件需求 ........................................................................................... 417
14.3.3 设计插件窗体 ........................................................................................... 418
14.3.4 编写代码 ................................................................................................... 419
14.3.5 创建菜单与设置快捷键 ......................................................................... 422
14.3.6 安装并测试功能 ...................................................................................... 422
14.4 课后思考 ............................................................................................................ 425
第 15 章 让 VBA 代码也能撤销 ....................................................................... 426
15.1 突破撤销限制 ...................................................................................................... 426
15.1.1 VBA 命令的撤销限制 ............................................................................... 426
15.1.2 设计可以撤销的 Sub 过程的思路与步骤 .......................................... 427
15.2 设计可撤销的插件 .............................................................................................. 428
15.2.1 编写插件 ................................................................................................... 428
15.2.2 为插件添加撤销功能 ............................................................................. 431
15.3 课后思考 ............................................................................................................. 436
第 16 章 使用 VSTO 设计插件的基本步骤 ......................................................... 437
16.1 安装 Visual Studio 2015 ..................................................................................... 437
16.1.1 VSTO 对于 Excel 用户的意义 ................................................................. 437
16.1.2 Visual Studio 版本介绍 ........................................................................... 438
16.1.3 安装 Visual Studio 2015 ........................................................................ 438
16.2 Excel 插件开发流程 ............................................................................................ 440
16.2.1 创建项目 ................................................................................................... 440
16.2.2 设计功能区 ............................................................................................... 441
16.2.3 写入 Sub 过程 .......................................................................................... 442
16.2.4 生成 DLL 插件 .......................................................................................... 443
16.3 将插件打包成安装程序 ....................................................................................... 444
16.3.1 Inno Setup 软件介绍 ................................................................................ 444
16.3.2 打包插件安装程序 .................................................................................... 444
16.3.3 安装插件 ................................................................................................... 447
16.4 课后思考 ............................................................................................................. 449
第 17 章 VSTO 与 VBA 的差异.......................................................................... 450
17.1 变量、常量与数据类型 .................................................................................... 450
17.1.1 数据类型 .................................................................................................. 450
17.1.2 变量 .......................................................................................................... 451
17.1.3 常量 .......................................................................................................... 452
17.2 函数 ..................................................................................................................... 452
17.2.1 调用方式不同 ......................................................................................... 453
17.2.2 函数差异 .................................................................................................. 453
17.3 数组 ..................................................................................................................... 454
17.3.1 原本功能的差异 .................................................................................... 454
17.3.2 新增功能 .................................................................................................. 455
17.4 窗体 ..................................................................................................................... 455
17.4.1 名称变化 .................................................................................................. 455
17.4.2 调用方式变化 ......................................................................................... 456
17.4.3 功能变化 ................................................................................................. 458
17.5 字典与正则表达式 ............................................................................................. 459
17.5.1 字典 .......................................................................................................... 459
17.5.2 正则表达式 .............................................................................................. 459
17.6 菜单与功能区 ..................................................................................................... 460
17.6.1 工作表菜单 .............................................................................................. 460
17.6.2 功能区菜单 .............................................................................................. 460
17.7 管理文件与目录 .................................................................................................. 461
17.7.1 管理文件 ................................................................................................... 462
17.7.2 管理目录 ................................................................................................... 462
17.8 杂项 ..................................................................................................................... 463
17.9 课后思考 ............................................................................................................ 465
第 18 章 将 VBA 插件升级为 VSTO 插件 .......................................................... 466
18.1 设计插件框架 ...................................................................................................... 466
18.1.1 VBA 插件介绍 ........................................................................................... 466
18.1.2 设计插件框架 ........................................................................................... 467
18.2 升级 Sub 过程“创建工资条” ........................................................................... 468
18.2.1 准备工作 ................................................................................................... 468
18.2.2 修改代码 ................................................................................................... 469
18.3 升级窗体“文件批量命名” ............................................................................... 470
18.3.1 准备工作 ................................................................................................... 471
18.3.2 修改代码 ................................................................................................... 474
18.4 升级事件过程“零值控制器” ........................................................................... 477
18.4.1 编写功能区回调过程 ........................................................................... 477
18.4.2 编写应用程序级事件过程 .................................................................. 477
18.5 打包安装程序 .................................................................................................... 478
18.5.1 制作安装程序 ......................................................................................... 478
18.5.2 安装测试 .................................................................................................. 479
18.6 课后思考 ............................................................................................................ 481
第 19 章 VSTO 的更多高级应用...................................................................... 482
19.1 添加窗体状态栏 ................................................................................................. 482
19.1.1 设计 .......................................................................................................... 482
19.1.2 测试 .......................................................................................................... 483
19.2 创建任务栏图标 ................................................................................................ 484
19.2.1 设计 .......................................................................................................... 484
19.2.2 测试 .......................................................................................................... 486
19.3 自动发邮件 .......................................................................................................... 486
19.3.1 设计 .......................................................................................................... 486
19.3.2 测试 .......................................................................................................... 488
19.4 全自动合并数据 .................................................................................................. 488
19.4.1 设计 .......................................................................................................... 489
19.4.2 测试 .......................................................................................................... 493
19.5 设计任务窗格 ...................................................................................................... 494
19.5.1 设计 .......................................................................................................... 494
19.5.2 测试 .......................................................................................................... 496
19.6 课后思考 ............................................................................................................ 498
第 20 章 365 个 VBA 常见问题答疑 ............................................................... 499