标题：EXCEL2007VBA开发技术大全
EXCEL2007VBA开发技术大全
作　者： 傅靖，李冬，罗刚君编著 
出 版 社： 电子工业出版社
出版时间： 2008-10-1
页　数：700页
开　本： 16开
I S B N： 9787121071706
定价：75.00元
简介
本书随附光盘一张，其中包括书中所有示例的素材文件。本书适合广大Excel VBA的初、中级用户使用，同时也可作为大中专院校相关专业学生、VBA程序员，以及社会相关培训班的难得教材。
前 言
本书的编写目的：
Excel 2007相对于以前版本的Excel，做出了巨大的跳跃。在文件格式上，Excel工作簿由以往的二进制文件格式（.xls、.xla和xlt等）变成开放的XML文件格式（.xlsm、.xlam、.xltm、.xlsx、.xlax和.xltx等）；在界面上，传统的菜单和工具栏被换成了功能区，并且图表外观也焕然一新；在功能上，增加和改进了一系列功能，例如丰富的条件格式、可调整的编辑栏、函数记忆式键入、新的OLAP公式和多维数据集函数、改进的排序和筛选功能，以及Excel表格的增强功能等。
这些调整和变化势必造成Excel对象模型的改变，为用户的学习和使用带来困难，而且目前图书市场上比较缺乏全面、系统且深入介绍Excel 2007 VBA编程技术的书籍。本书正是为了弥补这种不足编写的，书中针对Excel 2007新的对象模型，全面深入地剖析Excel 2007 VBA中的各个Excel对象及其使用方法。
本书的内容框架
本书是一本Excel VBA综合开发参考大全，书中几乎囊括了使用Excel VBA开发Excel应用程序的全部知识，同时在讲解中结合了大量实用并具有代表性的示例。
本书共23章，分为4个部分。各个部分涉及的技术既相互独立，又相互联系。书中逐步引导读者深入学习并掌握Excel VBA的编程知识、方法和技巧，是Excel VBA爱好者和开发人员必备的案头参考书。
第1部分 基础入门篇
第1章介绍如何使用宏录制器录制宏，以及如何运行宏，并帮助读者认识和定制VBA集成开发环境。
第 2 章介绍Excel 2007对象模型、Application（应用程序）、Workbook（工作簿）和Worksheet（工作表）等主要对象，着重介绍最常用的Range（区域）对象，以及一个非常有用，但往往被开发人员忽视的Name（名称）对象。
第 3 章介绍标识符、运算符、表达式和数据类型等程序设计中的各种基本概念，结合笔者在Excel二次开发中的经验，总结并提出了VBA代码规范、提高VBA代码运行效率的方法及各种有益的VBA编程习惯。
第2部分 巩固提高篇
第4章介绍数组的基本概念，说明如何实现数组与Excel的Range及Name对象之间的交互，并且介绍如何使用几个常用的数组内置函数和一些有用的自定义数组函数。
第5章介绍如何操作用户窗体及ActiveX控件和窗体控件。
第6章全面说明Excel的事件过程的基本原理，并具体分析工作表、图表和工作簿事件的使用方法。
第7章介绍如何创建两种不同类型的图表（嵌入式图表和图表工作表），以及如何编辑图表系列，同时介绍如何使用数组赋值并为图表添加标签。
第8章介绍如何创建并操作数据透视表。
第9章介绍如何创建Excel表，并使用自动筛选和记录单等对象，以及如何使用AdvanceFilter方法。
第10章分析并介绍各种不同类型的错误，以及如何编写错误处理程序，然后介绍不同的错误调试工具及技术。
第 11 章全面讲解功能区的基础界面，并通过示例说明如何使用VBA访问功能区及使用RibbonX代码定制功能区。
第3部分 高级编程篇
第12章介绍如何在Excel 2007中创建和控制命令栏及快捷菜单。
第13章介绍结构化查询语言SQL及其最常用的4种语句（SELECT、INSERT、UPDATE和DELETE），并介绍ADO中的几个顶级对象，如何在Excel中使用ADO，并使用ADO访问Access和Excel中的数据。
第14章详细介绍顺序、随机及二进制文件，说明如何操作文件、文件夹，并使用文件系统对象FSO。
第15章介绍如何使用Excel VBA来实现Excel与Internet的交互。
第16章介绍XML的一些基础知识，并说明如何实现使用VBA来实现XML的自动处理。
第17章详细介绍类模块的基础知识，说明如何使用类模块创建自定义对象，并使用类模块捕获应用程序事件和嵌入式图表事件等。
第18章介绍Windows API的基础知识，以及如何在Excel VBA中调用API实现冻结用户窗体、获取系统信息、捕获按键状态，改变用户窗体样式等操作。
第19章介绍不同类型的加载项，以及如何使用这些加载项。
第20章介绍使用不同方式与其他Office组件建立连接（晚期绑定和早期绑定），以及如何控制Word、Access及Outlook等组件。
第21章介绍VBE对象模型及其主要对象，以及如何操作VBProject中的各个对象、创建窗体组件并为VBE添加菜单项等。
第22章分析并介绍在编写国际化应用程序中应该注意的问题，以及如何实现不同语言的切换。
第4部分 综合系统篇
第23章通过两个综合系统实例综合应用VBA的编程技术，使读者可以快速提高编程水平。
本书的特点归纳
与同类书相比，本书主要有如下4个特色。
（1）实力派作者的力作，融汇了作者大量的工作经验与心得体会。
（2）内容全面、系统且实用，从零开始、循序渐进，针对性和实践性强。
（3）实例丰富且应用范围广泛，可以满足读者“一册学通”的愿望。
（4）穿插大量VBA编程技巧和设计规范知识，提供详细的编程思路和代码注释。手把手地引导读者从入门到精通，实现从初学者到Excel VBA高级开发人员的跨越。
光盘中的内容
本书随附光盘中包括了本书中用到的所有示例，读者阅读相应的知识点后可以使用对应的示例反复多次上机练习，以加深和巩固对知识点的理解和掌握。
本书读者对象
对于Excel VBA初学者，这是一本不可多得的VBA入门教材；对于有一定基础的中高级水平的Excel VBA用户，本书提供了对Excel VBA各个知识点的深入剖析，并提供了相应的示例，可以帮助其快速提高二次开发水平。本书同时也可作为大中专院校相关专业学生，以及社会相关培训班的理想教材。
作者介绍
本书作者都是大型Office论坛的版主，具有丰富的Excel VBA编程经验。本书主要由傅靖、李冬和罗刚君编写，参与编写的人还有钟波、段左英、李洪丽、杨利美、苗素丽、刘永美、谢汝祥、郭能进、何文祥、何玉凤、廖日坤、金镇、李宁宇、黄小惠、廖济林、庞丽梅、邱远彬、黄桂群、刘伟捷、黄乘传、李彦超、付军鹏、张广安及张洪波等，他们在资料的收集、整理和校对方面做了大量的工作。从而最大限度地保证了书稿内容的系统、全面和实用，在此一并向其表示感谢！
目 录
第1部分 基础入门篇
第1章 Excel VBA起步 2
1.1 使用宏录制器 3
1.1.1 录制宏 3
1.1.2 确保“开发工具”选项卡可见 3
1.1.3 成功录制宏的因素 4
1.1.4 录制模式：相对模式或绝对模式 4
1.1.5 录制选项 7
1.1.6 完成录制 8
1.1.7 编辑代码 9
1.1.8 录制宏的限制 10
1.1.9 安全性问题 11
1.2 运行宏 13
1.2.1 打开“宏”对话框的方式 13
1.2.2 快捷键方式 13
1.2.3 表单控件方式 14
1.2.4 ActiveX控件方式 15
1.2.5 快速访问工具栏方式 16
1.2.6 VBE窗口方式 17
1.3 VBA集成开发环境 17
1.3.1 访问VBA集成开发环境 17
1.3.2 IDF中的各组件 18
1.3.3 “工程资源管理器”窗口 19
1.3.4 “属性”窗口 21
1.3.5 “对象浏览器”窗口 22
1.3.6 “代码”窗口 24
1.4 定制集成开发环境 29
1.4.1 “编辑器”选项卡 29
1.4.2 “编辑器格式”选项卡 32
1.4.3 “通用”选项卡 33
1.4.4 “可连接的”选项卡 34
1.4.5 定制工具栏和菜单栏 34
1.5 使用系统帮助 35
1.6 认识信任中心 36
1.7 小结 42
第2章 Excel的对象模型及其主要对象 43
2.1 Excel 2007对象模型 44
2.1.1 Objects对象及对象层次结构 44
2.1.2 集合 44
2.1.3 属性 45
2.1.4 方法 46
2.1.5 事件 46
2.1.6 获取帮助 47
2.1.7 对象浏览器 48
2.1.8 使用“立即”窗口来调试代码 49
2.2 Application对象 49
2.2.1 全局对象 50
2.2.2 Active属性 50
2.2.3 DisplayAlerts属性 51
2.2.4 ScreenUpdating属性 51
2.2.5 Evaluation方法 52
2.2.6 StatusBar属性 53
2.2.7 SendKeys方法 54
2.2.8 OnTime方法 56
2.3 Workbooks工作簿集合对象 57
2.3.1 创建一个新的工作簿 57
2.3.2 打开工作簿 58
2.3.3 保存和关闭所有工作簿 58
2.3.4 与工作簿相关的3个
1.1.4 自定义函数 59
2.3.5 使用自定义函数完成的一些工作簿操作 60
2.4 Worksheets工作表集合对象 62
2.5 Range对象概述 63
2.6 Range对象的常用属性 68
2.6.1 Value属性 69
2.6.2 Text属性 69
2.6.3 Count及Areas属性 70
2.6.4 Address属性 71
2.6.5 HasFormula属性 72
2.6.6 Font属性 73
2.6.7 Interior属性 73
2.6.8 Formula属性 75
2.6.9 NumberFormat属性 75
2.7 Range对象的常用方法 76
2.7.1 Activate和Select方法 76
2.7.2 Copy和Paste方法 77
2.7.3 Clear和Delete方法 77
2.8 返回Range对象的方法 78
2.8.1 Range属性 78
2.8.2 Cells属性 81
2.8.3 Offset属性 82
2.8.4 Columns和Rows属性 82
2.8.5 Resize属性 84
2.8.6 用CurrentRegion属性 84
2.8.7 End属性 85
2.8.8 Union和Interset方法 86
2.8.9 SpecialCells方法 86
2.9 操作Range对象的示例 87
2.9.1 快速定位并填充区域中满足条件的单元格 87
2.9.2 快速定位并删除满足条件的所有数据行 88
2.9.3 根据选择区域执行相应的操作 91
2.10 使用名称 93
2.10.1 名称及“名称管理器”对话框 93
2.10.2 在Excel中创建并使用名称 96
2.10.3 Names集合和Name对象 99
2.10.4 添加指向区域的名称 100
2.10.5 在名称中保存数据 101
2.10.6 隐藏名称 102
2.10.7 处理Excel内置名称 103
2.10.8 改变名称指向的区域 103
2.10.9 查找名称 104
2.11 小结 109
第3章 VBA语言基础 110
3.1 程序设计基本概念 111
3.1.1 标识符 111
3.1.2 运算符与表达式 113
3.1.3 VBA代码规范 116
3.1.4 提高VBA代码运行效率 122
3.1.5 各种有益的VBA编码习惯 124
3.2 数据类型 128
3.2.1 基本数据类型 128
3.2.2 自定义数据类型 130
3.2.3 数据类型间的转换 131
3.3 常量与变量 132
3.3.1 常量 132
3.3.2 变量 134
3.3.3 Option Explicit语句 135
3.3.4 常量和变量的关系 136
3.4 VBA中两种与用户交互的简单方式 136
3.4.1 使用MsgBox函数输出 136
3.4.2 使用InputBox函数获取简单的输入 138
3.4.3 InputBox方法 140
3.5 语句 142
3.5.1 赋值语句 142
3.5.2 注释语句 143
3.5.3 结束语句 144
3.5.4 With语句 145
3.6 小结 146
第2部分 巩固提高篇
第4章 数组 148
4.1 数组的基本概念 149
4.2 声明数组 149
4.3 静态数组 149
4.4 动态数组 150
4.5 为数组元素赋值 151
4.6 数组与Excel对象的交互 152
4.6.1 二维数组与Excel区域 152
4.6.2 数组与Excel区域Range对象的交互 153
4.6.3 数组与Excel名称Name对象的交互 156
4.6.4 使用“监视”窗口查看数组的值 157
4.7 常用的数组内置函数 158
4.7.1 Lbound和Ubound函数 158
4.7.2 Array和IsArray函数 158
4.7.3 Erase函数 160
4.7.4 Split和Join函数 161
4.7.5 Filter函数 161
4.7.6 Index函数 162
4.7.7 Transpose函数 164
4.8 操作数组的自定义函数 165
4.8.1 巩固数组基础知识 165
4.8.2 自定义数组函数 167
4.9 小结 175
第5章 用户窗体及常用内部控件 176
5.1 显示用户窗体 177
5.2 创建用户窗体 177
5.3 直接访问窗体中的控件 179
5.4 阻止关闭按钮 182
5.5 维护数据列表 183
5.6 非模态用户窗体 188
5.6.1 非模态用户窗体特点 188
5.6.2 进度指示条 188
5.7 可变用户窗体名 190
5.8 控件概述 190
5.9 窗体控件和ActiveX控件 190
5.10 ActiveX控件 191
5.10.1 滚动条控件 191
5.10.2 微调按钮控件 192
5.10.3 复选框控件 192
5.10.4 选项按钮控件 193
5.11 窗体控件 194
5.12 动态ActiveX控件 196
5.13 图表中的控件 198
5.14 小结 199
第6章 理解Excel的事件 200
6.1 事件过程介绍 201
6.1.1 事件概述 201
6.1.2 与事件过程相关的概念 201
6.1.3 一个对象的可用事件 201
6.1.4 自动生成事件外壳代码 203
6.1.5 事件代码位置 205
6.1.6 事件层次及事件引发顺序 205
6.1.7 嵌入式图表对象和应用程序对象 208
6.1.8 同一对象的不同事件的引发顺序 208
6.1.9 避免同一事件在不同层次对象中的继续引发 209
6.1.10 Excel对象的事件 210
6.2 工作表事件 210
6.2.1 可用的工作表事件 210
6.2.2 启用事件 211
6.2.3 工作表计算 211
6.3 图表事件 212
6.3.1 可用的图表事件 212
6.3.2 利用双击提供简单的格式化图表功能 213
6.4 工作簿事件 215
6.4.1 可用的工作簿事件 215
6.4.2 保存修改 216
6.4.3 页眉和页脚 216
6.5 小结 217
第7章 图表 218
7.1 图表概述 219
7.2 创建嵌入式图表 220
7.2.1 宏录制器生成的代码 220
7.2.2 整理录制宏代码 221
7.3 创建位于图表工作表中的图表 222
7.3.1 使用宏录制器生成的代码 222
7.3.2 整理录制宏代码 223
7.4 编辑图表中的系列 223
7.5 创建数组系列图表 225
7.6 使用数组赋值图表的数据系列 227
7.7 操作图表系列公式SERIES 230
7.7.1 图表系列SERIES公式的语法及参数 230
7.7.2 获取图表系列公式中的各部分值 231
7.8 添加图表标签 234
7.9 小结 235
第8章 数据透视表 236
8.1 创建数据透视表 237
8.1.1 准备数据源 237
8.1.2 创建数据透视表 237
8.1.3 查看录制的代码 238
8.1.4 整理录制代码 239
8.2 数据透视表缓存集合PivotCaches 241
8.3 数据透视表集合PivotTables 241
8.4 数据透视表字段集合PivotFields 241
8.4.1 在已有数据透视表中添加字段 241
8.4.2 改变数据透视表字段布局 242
8.4.3 改变数据透视表字段布局 244
8.5 处理计算字段CalculatedField 245
8.6 数据字段的所有数据项集合PivotItems 246
8.6.1 分组 246
8.6.2 Visible属性 249
8.6.3 CalculatedItems集合 250
8.7 生成数据透视图PivotChart 250
8.8 使用外部数据源 252
8.9 小结 253
第9章 利用VBA管理数据列表 254
9.1 结构化数据及数据列表 255
9.2 排序区域 255
9.3 创建一个Excel表 258
9.4 排序Excel表 259
9.5 自动筛选 259
9.5.1 AutoFilter对象 261
9.5.2 Filter对象 261
9.5.3 使用日期自定义筛选 262
9.6 使用自动筛选的综合实例 263
9.6.1 准备工作簿及添加
9.6.1 ActiveX控件 263
9.6.2 填充组合框 263
9.6.3 添加组合框的Click事件过程及其调用的筛选过程 264
9.6.4 复制筛选数据行到新建工作表中 266
9.6.5 处理可见行 267
9.6.6 按准确日期筛选 268
9.7 使用高级筛选在不同工作簿之间筛选并传递数据 269
9.7.1 定义名称 270
9.7.2 组织判断条件Criteria区域 270
9.7.3 插入表单控件并编写VBA过程 271
9.8 记录单 271
9.9 小结 273
第10章 错误处理与程序调试 274
10.1 错误类型 275
10.1.1 语法错误 275
10.1.2 运行时错误 275
10.1.3 逻辑错误 275
10.1.4 3种错误类型的比较 276
10.2 错误对象Err 277
10.3 编写完美的无错程序 280
10.3.1 分析功能并初次完成代码 280
10.3.2 代码并不完美 280
10.3.3 代码仍然不完美 281
10.3.4 代码还是不完美 282
10.3.5 放弃编写完美的代码 283
10.3.6 更换运行时错误的处理方式 283
10.4 运行时错误处理 284
10.4.1 未经处理和经过处理的错误 284
10.4.2 错误处理的一般步骤 284
10.4.3 错误处理机制的深层运用 290
10.4.4 复杂错误处理机制之一：函数返回型 292
10.4.5 复杂错误处理机制之二：错误重抛型 295
10.5 编写处理错误的自定义函数 298
10.5.1 判断工作簿是否打开的自定义函数 298
10.5.2 判断工作表是否存在的自定义函数 299
10.5.3 判断给定名称是否存在 299
10.5.4 判断给定变量是否是布尔型变量 300
10.6 程序调试概述 301
10.6.1 VBA提供的调试工具 301
10.6.2 “调试”工具栏 301
10.6.3 处理不易解决错误的通用步骤 302
10.6.4 错误捕获设置 302
10.7 程序的3种模式及其切换 304
10.7.1 设计模式 304
10.7.2 运行模式 304
10.7.3 中断模式 305
10.8 跟踪代码 305
10.8.1 两种常用的设置断点方法 305
10.8.2 跟踪代码的方法及其选择 307
10.9 使用调试窗口 309
10.9.1 “本地”窗口 309
10.9.2 “立即”窗口 310
10.9.3 “监视”窗口 313
10.9.4 “调用堆栈”对话框 316
10.10 调试常用快捷键 317
10.11 使用书签快速切换 317
10.12 小结 318
第11章 功能区 319
11.1 功能区的基础界面 320
11.1.1 功能区中的选项卡 320
11.1.2 功能区的特点 320
11.1.3 快速访问工具栏 321
11.2 使用VBA访问功能区 321
11.2.1 Excel 2007中的CommandBar对象 321
11.2.2 访问一个功能区控件 321
11.2.3 CommandBars对象处理功能区的所有相关方法 323
11.2.4 激活选项卡 324
11.2.5 VBA和功能区 325
11.3 使用RibbonX代码定制功能区 325
11.3.1 定制功能区的特点 325
11.3.2 一个简单的RibbonX示例 326
11.3.3 示例剖析及知识总结 328
11.3.4 功能区XML文件参考 329
11.3.5 另一个RibbonX示例 330
11.3.6 新增一个选项卡 332
11.3.7 定制功能区总小结 336
11.4 小结 338
第3部分 高级编程篇
第12章 命令栏及快捷菜单 340
12.1 工具栏、菜单栏和快捷菜单 341
12.2 Excel内置工具栏 342
12.3 所有级别的控件 344
12.4 创建新菜单 348
12.5 传递参数 350
12.6 删除菜单 350
12.7 创建工具栏 351
12.8 快捷菜单 354
12.9 显示弹出式命令栏 356
12.10 小结 358
第13章 使用ADO的数据访问 359
13.1 结构化查询语言 360
13.1.1 SELECT语句 360
13.1.2 INSERT语句 362
13.1.3 UPDATE语句 363
13.1.4 DELETE语句 363
13.2 ADO概述 363
13.2.1 数据库连接对象Connection 364
13.2.2 记录集对象Recordset 368
13.2.3 字段对象Field 374
13.2.4 命令对象Command 374
13.2.5 二进制数据流或文本流对象Stream 376
13.2.6 错误集合和错误对象Errors & Error 377
13.2.7 ADO操作数据库的一般过程 377
13.3 在Excel应用程序中使用ADO 378
13.4 使用ADO访问Access中数据库 378
13.4.1 连接到Microsoft Access数据源 378
13.4.2 使用纯文本查询从Microsoft Access中获取数据 379
13.4.3 使用存储查询从Microsoft Access中获取数据 381
13.4.4 插入数据 383
13.4.5 更新数据 384
13.4.6 删除数据 386
13.4.7 在Microsoft Access中使用普通无格式文本SQL插入、
10.3.1 更新和删除记录 386
13.5 使用ADO访问Excel中数据 389
13.5.1 查询Excel工作簿 389
13.5.2 在Excel工作簿中插入和更新记录 391
13.6 使用ADO查询文本文件 392
13.7 小结 394
第14章 文件编程 395
14.1 文件的基本概念 396
14.1.1 文件结构 396
14.1.2 文件分类 396
14.1.3 文件的访问类型 397
14.2 文件处理的一般步骤 397
14.3 文件处理中的简单函数和语句 397
14.4 顺序文件 401
14.4.1 打开顺序文件 401
14.4.2 关闭顺序文件 402
14.4.3 顺序文件的写操作 402
14.4.4 顺序文件的读操作 405
14.4.5 顺序文件的读操作示例 406
14.4.6 使用灵活的分隔符 408
14.4.7 生成HTML格式的文件 410
14.4.8 生成XML格式的文件 411
14.5 随机文件 413
14.5.1 打开和关闭 413
14.5.2 写操作 414
14.5.3 读操作 415
14.5.4 修改、追加和删除记录 415
14.6 二进制文件 416
14.6.1 打开和关闭 416
14.6.2 读写操作 416
14.6.3 3种不同类型文件的典型读写操作语句 417
14.7 操作文件和文件夹 417
14.7.1 VBA中有关目录和文件的操作语句及函数 417
14.7.2 综合实例 423
14.8 文件系统对象FSO 426
14.8.1 FSO对象模型及
14.6.3 FileSyetemObject对象 426
14.8.2 Driver对象及获取驱动器信息 428
14.8.3 folder对象及处理文件夹 430
14.8.4 file对象与处理文件 432
14.9 小结 436
第15章 Excel和Internet 437
15.1 使用VBA创建超链接 438
15.1.1 使用宏录制器记录插入超链接过程 438
15.1.2 获取关键对象及方法 438
15.1.3 编写使用插入超链接的代码 438
15.1.4 使用FollowHyperlink方法 439
15.2 Internet中的工作簿 442
15.3 使用VBA创建和发布网页 442
15.3.1 PublishObjects和PublishObject对象 443
15.4 基于Internet的查询 446
15.4.1 在工作簿中打开Web网页 446
15.4.2 使用Web查询 447
15.4.3 解析Web网页以获取特定信息 449
15.5 小结 450
第16章 Excel和XML 451
16.1 XML是Excel的明日之星 452
16.2 XML基础 452
16.2.1 XML声明 453
16.2.2 处理指令 453
16.2.3 注释 453
16.2.4 元素和根元素 453
16.2.5 属性 454
16.2.6 名称空间 454
16.2.7 查看和编辑一个XML文档 455
16.2.8 直接处理XML数据 456
16.2.9 创建并处理自定义XML映射 458
16.3 使用VBA自动化处理XML 461
16.3.1 打开一个XML文档直接映射到列表 461
16.4 使用DOM和XPath操作XML文件 465
16.4.1 使用DOM对象加载XML文件 466
16.4.2 协同使用ADO和DOM将Excel数据转换为XML 467
16.4.3 使用DOM和XPath操作XML文件 470
16.5 小结 475
第17章 类模块 476
17.1 类和类模块 477
17.1.1 类和类模块 477
17.2 类模块的属性 478
17.3 属性剖析 479
17.3.1 私有成员变量 479
17.3.2 Property Let过程 480
17.3.3 Property Get过程 480
17.3.4 Property作用域 480
17.3.5 实现用户定义类型属性 481
17.3.6 实现只读属性 481
17.3.7 在客户应用程序中使用属性 482
17.3.8 在Collection类中使用批量赋值函数 482
17.3.9 在集合类中提供自己的Exists属性 483
17.4 类模块方法 483
17.4.1 自定义方法的作用域 483
17.4.2 为自定义方法传递参数 484
17.4.3 实现自定义类方法 484
17.5 类模块事件 484
17.5.1 Initialize事件 484
17.5.2 Terminate事件 485
17.5.3 实现自定义事件 486
17.6 类模块的其他知识点 488
17.6.1 类模块的Instancing属性 488
17.6.2 允许用户使用For Each……Next语句 488
17.6.3 使用枚举常数 488
17.6.4 错误处理 489
17.6.5 使用Dictionary对象 489
17.7 创建自定义对象 489
17.8 改进自定义对象的属性过程 491
17.9 为自定义对象创建集合 492
17.9.1 在标准模块中使用Collection集合对象 492
17.9.2 在类模块中使用Collection集合对象 493
17.10 封装 495
17.11 捕获应用程序事件 496
17.12 嵌入式图表事件 497
17.13 捕获用户窗体控件事件 500
17.14 在工程间引用类 502
17.15 小结 503
第18章 理解并调用Windows API 504
18.1 API基础 505
18.1.1 API的概念 505
18.1.2 DLL的含义 505
18.1.3 API函数 505
18.1.4 API数据类型 507
18.1.5 Handle、hwnd和hDC 509
18.2 使用API的基本步骤 511
18.2.1 声明API函数 511
18.2.2 调用API函数 515
18.3 剖析API调用 516
18.4 返回API中的错误描述文本 518
18.4.1 编写API错误返回函数 518
18.4.2 调用错误信息返回函数 520
18.5 API示例 520
18.5.1 冻结用户窗体 520
18.5.2 将文件删除到回收站中 523
18.5.3 获取系统信息 524
18.5.4 捕获Shift、Ctrl及Alt键的状态 527
18.5.5 改变用户窗体样式 528
18.6 小结 535
第19章 加载项 536
19.1 加载项概述 537
19.2 Excel加载项 537
19.2.1 概述 537
19.2.2 保护工程以隐藏代码 538
19.2.3 创建加载项 538
19.2.4 关闭加载项 539
19.2.5 代码变化 539
19.2.6 保存更改 540
19.2.7 安装一个加载项 540
19.2.8 从“可用加载宏”列表中移除一个加载项 541
19.3 自动化加载项 542
19.3.1 创建一个简单的单向通信加载项GetSequence 542
19.3.2 在Excel中注册自动化加载项 544
19.3.3 使用自动化加载项 545
19.3.4 创建一个复杂的双向通信自动化加载项 546
19.4 小结 552
第20章 控制其他Office组件 554
20.1 建立链接 555
20.1.1 晚期绑定 555
20.1.2 早期绑定 557
20.2 在Word中打开文档 558
20.3 访问当前的活动Word文档 559
20.4 创建一个新的Word文档 560
20.5 在Excel中使用ADO技术操作Access数据 561
20.6 综合使用Access、Excel和Outlook 562
20.7 小结 566
第21章 操作VBE 567
21.1 开始前的准备 568
21.2 VBE及其对象模型 569
21.2.1 VBE对象模型 569
21.2.2 VBE模型中的对象 570
21.2.3 Excel和VBE对象模型之间的联系 571
21.2.4 引用VBE中的对象 571
21.3 处理VBProject中的各个对象 573
21.3.1 测试指定组件的存在 573
21.3.2 在一个工程中添加模块 574
21.3.3 在一个模块中添加过程 575
21.3.4 创建一个事件过程 576
21.3.5 删除工程中的模块 578
21.3.6 删除模块中的过程 578
21.3.7 删除工程中的所有VBA代码 580
21.3.8 列出工程中所有组件的名称及类型 580
21.3.9 列出模块中的所有过程 581
21.3.10 返回过程的声明部分及其他信息 582
21.3.11 计算一个Component中代码总行数 584
21.3.12 计算一个工程中的总代码行数 585
21.3.13 将一个VBComponent导出为文本文件 586
21.3.14 在工程间复制模块 588
21.3.15 在模块中搜索文本 590
21.3.16 新建一个工作簿并在其中写入代码 590
21.3.17 在操作VBE时防止屏幕闪动 591
21.4 操作窗体组件 592
21.4.1 用代码创建指定数目和大小的按钮 592
21.4.2 窗体控件的Designer对象 593
21.5 在VBE编辑器中添加新的菜单项 596
21.5.1 VBE的命令栏对象 596
21.5.2 在VBE中添加菜单 598
21.5.3 为当前过程添加行号和错误处理 600
21.6 处理其他VBE对象 603
21.6.1 处理引用 603
21.6.2 VBE窗口 604
21.7 小结 605
第22章 创建国际通用程序 606
22.1 Windows区域设置和Office 2007用户语言 607
22.1.1 4个国家的本地化配置 607
22.1.2 辨别用户区域设置和Windows语言 607
22.2 从国际化的角度来看VBA
22.1 的转换函数 607
22.2.1 隐式转换 607
22.2.2 日期字符串 609
22.2.3 IsNumeric和IsDate函数 609
22.2.4 CStr函数 609
22.2.5 CDbl、CSng、CLng、
22.2.5 CInt、CByte、CCur和
22.2.5 CDec函数 609
22.2.6 CDate和DateValue函数 609
22.2.7 CBool函数 610
22.2.8 Format函数 610
22.2.9 FormatCurrency、FormatDate Time、FormatNumber和
22.2.5 FormatPercent函数 610
22.2.10 Str函数 610
22.2.11 sNumToUS函数 610
22.2.12 Val函数 611
22.2.13 Application.Evaluate 612
22.3 与Excel交互 612
22.3.1 为Excel发送数据 612
22.3.2 读取Excel中的数据 614
22.3.3 与Excel协同工作的原则 614
22.4 与用户交流 615
22.4.1 纸张大小 615
22.4.2 显示数据 615
22.4.3 理解数据 615
22.4.4 XXXLocal属性 616
22.4.5 与用户合作的原则 616
22.5 Excel 2007的国际化选项 617
22.6 不遵循普遍规则的属性、
22.6 方法及函数 619
22.6.1 OpenText方法 619
22.6.2 SaveAs方法 620
22.6.3 ShowDataForm子过程 620
22.6.4 粘贴文本 621
22.6.5 数据透视表计算字段和
22.2.5 项目、条件格式和数据
22.2.5 有效性验证公式 621
22.6.6 Web查询 622
22.6.7 =TEXT()工作表函数 622
22.7 Range对象的Value、Formula 
22.7 及FormulaArray属性 623
22.7.1 Range.AutoFilter方法 623
22.7.2 Range.AdvanceFilter方法 623
22.8 Application的Evaluate、ConvertFormula和
22.8 ExecuteExcel4Macro函数 624
22.9 Office 2007的语言设置 624
22.9.1 文本来自何处 624
22.9.2 识别Office用户界面语言设置 625
22.10 创建一个多语言应用程序 628
22.10.1 建议的途径 629
22.10.2 存储字符串资源 629
22.11 在多语言环境中工作 630
22.11.1 保留足够的空间 630
22.11.2 使用Excel对象 630
22.11.3 避免使用SendKeys方法 631
22.11.4 使用功能区 631
22.11.5 开发多语言应用程序的原则 631
22.12 有用的自定义函数 631
22.12.1 bWinToNum函数 631
22.12.2 bWinToDate函数 632
22.12.3 sFormatDate函数 633
22.12.4 ReplaceHolders函数 633
22.13 小结 634
第4部分 综合系统篇
第23章 VBA综合实例 636
23.1 学生成绩管理系统 637
23.1.1 系统说明 637
23.1.2 设定工作表结构 638
23.1.3 设计程序登录窗体 640
23.1.4 设置用户权限管理窗体 641
23.1.5 编写窗体及日志记录代码 642
23.1.6 成绩查询 648
23.1.7 定制功能区按钮 653
23.1.8 使用程序 654
23.2 工作表管理综合插件系统 657
23.2.1 系统说明 657
23.2.2 设置主框架 658
23.2.3 批量建立工作表 659
23.2.4 批量复制工作表 661
23.2.5 以输入字符为条件重命名工作表 662
23.2.6 以选区字符为条件重命名工作表 663
23.2.7 排序工作表 664
23.2.8 建立工作表目录 666
23.2.9 批量隐藏/显示工作表 667
23.2.10 设计工具栏与快捷键 668
23.2.11 使用插件 669
附录A 代码窗口中的常用快捷键及其功能 677
附录B 错误列表 679
序言
Excel 2007相对于以前版本的Excel，做出了巨大的跳跃。在文件格式上，Excel工作簿由以往的二进制文件格式（.xls、.xla和xlt等）变成开放的XML文件格式（.xlsm、.xlam、.xltm、.xlsx、.xlax和.xltx等）；在界面上，传统的菜单和工具栏被换成了功能区，并且图表外观也焕然一新；在功能上，增加和改进了一系列功能，例如丰富的条件格式、可调整的编辑栏、函数记忆式键入、新的OLAP公式和多维数据集函数、改进的排序和筛选功能，以及Excel表格的增强功能等。 
这些调整和变化势必造成Excel对象模型的改变，为用户的学习和使用带来困难，而且目前图书市场上比较缺乏全面、系统且深入介绍Excel 2007 VBA编程技术的书籍。本书正是为了弥补这种不足编写的，书中针对Excel 2007新的对象模型，全面深入地剖析Excel 2007 VBA中的各个Excel对象及其使用方法。 
本书是一本Excel VBA综合开发参考大全，书中几乎囊括了使用Excel VBA开发Excel应用程序的全部知识，同时在讲解中结合了大量实用并具有代表性的示例。 
本书共23章，分为4个部分。各个部分涉及的技术既相互独立，又相互联系。书中逐步引导读者深入学习并掌握Excel VBA的编程知识、方法和技巧，是Excel VBA爱好者和开发人员必备的案头参考书。
文摘
在日常Excel使用中，如果需要重复执行同样顺序的命令， 那么就可以使用Excel VBA来使这些过程自动化以节省时间和精力；如果需要创建一个基于Excel的应用程序，但用户本身不熟悉Excel的功能，那么就可以针对特定的任务通过宏来创建一些具有引导功能的按钮和对话框来帮助这些用户完成相应的操作。 
在办公室自动化中，Excel VBA是一十Excel可以依靠的非常重要的工具。而其中的宏录柳器又是一个Excel可以依靠的非常重要的工具，用其可以通过鼠标和键盘执行的操作转换为Excel VBA代码，可以手动执行操作中的大部分都可以使用宏录制器来记录。这是一种快捷而简单的方式，不会编写VBA代码的用户也可以很快掌握。许多Excel用户记录并运行宏， 甚至会产生没有必要学习VBA的感觉。事实上很多操作确实不需要专门学习，而熟练使用Excel宏录制器能够解决常见问题，也是学习VBA的一个捷径。 
在本章中将说明如何使用宏录制器，以及运行宏的所有方式。读者将学习如何使用Visual Basic编辑器来检查和修改宏，从而不再受到宏录制器的限制。而且能够超出宏录制器有限的能力访问， 并学会使用VBA语言和Excel对象模型的强大功能。