《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  选区:SelectionRangeSelection ............................................................. 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  AndOr 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