第1章 字符串操作 1
1.1 VBA如何存放字符串 1
1.1.1 Unicode与ANSI 2
1.2 使用内建字符串函数 3
1.2.1 比较字符器 3
1.2.2 转换字符串 5
1.2.3 建立字符串: Space和String函数 6
1.2.4 计算字符串长度 6
1.2.5 格式化字符串 7
1.2.6 对齐字符串 8
1.2.7 查找字符串 10
1.2.8 使用部分字符串 10
1.2.9 替换部分字符串 12
1.2.10 ANSI值 12
1.2.11 使用字节 13
1.2.12 函数的组合 14
1.3 查找和替换文本 14
1.3.1 将清单中的任何一个字符换成另一字符 15
1.3.2 删除多余空格 18
1.3.3 删除字符串尾部的Null和填充 19
1.3.4 将一个子串换成另一子串 20
1.3.5 替换字符串中的编号令牌 25
1.4 收集字符串信息 27
1.4.1 确定字符特性 27
1.4.2 计算子串出现的次数 29
14.3 计算分隔字符串中的令牌数 31
1.4.4 计算字符串中的单词数 32
1.5 转换字符串 33
1.5.1 将数字变成带有正确序号后缀的字符串 33
1.5.2 逆转字符串 34
1.5.3 将数字变成罗马数字 36
1.5.4 进行智能大小写转换 38
1.5.5 用XOR加密法加密/解密文本 42
1.5.6 返回左填充或右填充到指定宽度的字符串 44
1.5.7 用Soundex算法比较字符串 46
1.6.1 按索引从字符串返回特定字 49
1.6 使用子串 49
1.6.2 取得字符串中的第一个和最后一个字 52
1.6.3 查找字符串最后一个匹配子串 54
1.6.4 将分隔字符串变成令牌集合 56
1.7 小结 58
第2章 使用日期和时间 59
2.1 何谓日期, 如何存放 59
2.1.1 额外好处 59
2.2.1 准确时间 60
2.1.2 提供日期值 60
2.2 内置VBA日期函数 60
2.2.2 如果只要时间部分 61
2.2.3 分析各部分 61
2.2.4 进行简单计算 64
2.2.5 基础深化 71
2.3 查找特定日期 71
2.3.1 求一个月的开头和结束 72
2.3.2 求一个星期的开头和结束 73
2.3.3 求一年的开头和结束 74
2.3.4 求一个季度的开头和结束 75
2.3.5 求上一个或下一个星期几 77
2.3.6 求下一个周年日 78
2.3.7 求一个月的第几个星期几 79
2.3.8 使用工作日 81
2.4 操作日期和时间 86
2.4.1 某个月有几天 86
2.4.2 6月有几个星期一 87
2.4.3 今年是否是闰年 88
2.4.4 将时间舍入为最接近的增量 90
2.4.5 将字符串或数字变成实际日期 92
2.5 使用经过时间(Elapsed Time) 95
2.5.1 求两个日期之间的工作日数 95
2.5.2 计算年龄 97
2.5.3 设定经过时间格式 99
2.5.4 设定累计时间格式 103
2.6 小结 104
第3章 使用数字 105
3.1 VBA中如何存放数字值 105
3.1.1 整数 106
3.1.2 浮点数及其产生的误差 107
3.1.3 分数 109
3.2 使用内置数字函数 110
3.2.1 数学和三角函数 110
3.2.2 数字转换与舍入 112
3.2.3 随机数 116
3.2.4 财务函数 118
3.2.5 制式转换 121
3.3.1 数学函数 124
3.3 定制数学和数字函数 124
3.3.2 几何计算 126
3.3.3 统计 129
3.4 小结 134
第4章 VBA中的搜索和排序 136
4.1 时间就是一切 136
4.1.1 引入StopWatch类 136
4.1.2 使用StopWatch类 137
4.2.1 何谓数组 138
4.2 使用数组 138
4.2.2 建立数组 140
4.2.3 数组中数据的使用 140
4.2.4 数组长度 141
4.2.3 用Variant指向数组 142
4.3 排序数组 144
4.3.1 QuickSort如何工作 144
4.3.2 观察QuickSort运行 151
4.3.3 使用QuickSort 151
4.3.4 速度考虑 152
4.3.5 排序集合(collections) 153
4.4 搜索 156
4.4.1 为什么使用二元搜索 157
4.4.2 二元搜索如何工作 157
4.4.3 使用二元搜索 161
4.5 小结 162
第5章 使用VBA类模块 163
5.1 为什么使用类模块(Class Module) 164
5.1.1 建立自己的对象 164
5.1.3 使开发更加容易 165
5.1.2 抽象复杂过程 165
5.2 类模块如何工作 166
5.2.1 类模块是Cookie的模子 166
5.2.2 对象实例是Cookie 166
5.3 一个简单例子: 文本文件类 166
5.3.1 建立对象类(Object Class) 167
5.3.2 建立属性(Property) 168
5.3.3 建立方法(Method) 168
5.3.4 使用对象类 169
5.4 使用Property语句 172
5.4.1 何谓Property语句? 为什么要使用Property语句? 172
5.4.2 用Property Get取得数值 173
5.4.3 用Property Let设置属性值 173
5.4.4 处理对象属性 174
5.5 高级类模块技术 175
5.5.1 对象层次 176
5.5.2 建立Parent属性 176
5.5.4 对象的集合(Collection) 177
5.5.3 自引用 177
5.5.5 生成自己的集合 179
5.5.6 建立常量类(Constant Class) 185
5.5.7 Windows API 类模块 187
5.5.8 VB 5中的类模块进阶(Advance) 192
5.6 小结 194
第6章 用类模块生成动态数据结构 195
6.1 动态与静态数据结构 195
6.1.2 递归动态结构 196
6.1.1 简单动态结构 196
6.2 VBA中如何实现? 197
6.2.1 取得新项目(Item)的引用 197
6.2.2 使对象变量引用现有项目 198
6.2.3 假如变量不引用任何东西 198
6.2.4 用类模块仿真数据结构 198
6.2.5 生成头(Header)类 199
6.3 生成堆栈 200
6.3.1 为什么使用堆栈 200
6.3.2 实现堆栈 200
6.3.3 StackItem类 201
6.4 生成队列(Queue) 205
6.4.1 为什么使用队列? 205
6.4.2 实现队列 205
6.5 生成顺序链接表 210
6.5.1 ListItem类 210
6.5.2 List类 210
6.6 生成二元树 218
6.6.1 遍历二元树 218
6.6.2 有何用处? 219
6.6.3 实现二元树 220
6.6.4 遍历树的程序步骤 224
6.7 小结 226
第7章 VBA专业开发 227
7.1 正确处理错误 227
7.1.1 三种错误类型 227
7.1.2 捕捉运行错误 229
7.1.3 响应捕捉的错误 231
7.1.4 使用标准错误处理程序 234
7.1.5 VBA的错误处理层次 236
7.1.6 提出(Raising)错误 237
7.2 专业查错 237
7.2.1 VBA查错工具 238
7.2.2 使用Immediate窗口 241
7.2.3 使用断点 243
7.2.4 编写无错代码的上策 244
7.3.1 建立对象模型 250
7.3 其它专业修饰 250
7.3.2 建立过程堆栈 252
7.3.3 应用程序登记(Logging) 254
7.3.4 提供联机帮助 257
7.4 小结 259
第8章 利用VBA IDE作为自动化服务器 260
8.1 VBA IDE对象模型 260
8.1.1 类层次 261
8.1.2 增加类型库引用 261
8.2.1 使用Windows 262
8.2 研究IDE类 262
8.1.3 引用IDE 262
8.2.2 操作命令条 266
8.2.3 使用VBA项目(Project) 271
8.2.4 修改项目构件 274
8.2.5 操作代码模块 281
8.3 集成: 其它对象模型 288
8.3.1 了解我们的对象模型 288
8.3.2 使用我们的对象模型 291
8.4 小结 293
第9章 取得和设置系统信息 294
9.1 VBA与系统信息 295
9.2 API函数 296
9.2.1 使用GetSystemMetrics函数 296
9.2.2 使用SystemParametersInfo函数 297
9.2.3 要求数据结构的函数 299
9.3 Windows访问性 301
9.3.1 使用Accessibility类 308
9.3.2 建立Accessibility类 309
9.4 键盘信息 311
9.4.1 使用Keyboard类 312
9.4.2 建立Keyboard类 314
9.5 内存状态 315
9.5.1 使用MemoryStatus类 315
9.5.2 建立MemoryStatus类 316
9.6 鼠标信息 316
9.6.1 使用Mouse类 317
9.7 非客户机尺寸 320
9.7.1 使用NonClientMetrics类 321
9.7.2 建立NonClientMetrics类 323
9.8 电源状态 328
9.8.1 使用PowerStatus类 329
9.9 屏幕和窗口信息 330
9.9.1 使用Screen类 332
9.9.2 建立Screen类 332
9.10 系统颜色 333
9.10.1 使用Systemcolors类 333
9.10.2 建立Systemcolors类 334
9.11 计算机和操作系统信息 335
9.11.1 使用SystemInfo类 337
9.12 小结 340
第10章 使用注册表 341
10.1 注册表结构 341
10.1.1 引用注册表键和数值 343
10.2 VBA注册表函数 343
10.3 Windows注册表函数 345
10.3.1 打开、关闭和建立键 345
10.3.2 使用注册值 348
10.3.3 枚举键和值 351
10.4 注册表的对象模型 354
10.4.1 概述 354
10.4.2 实现这些类 355
10.4.3 使用Registry对象 361
10.5 小结 363
第11章 Windows 网络API 364
11.1 基本网络功能 364
11.1.1 使用公共网络对话 364
11.1.2 自己处理网络资源 369
11.1.3 取得网络资源信息 373
11.2 高级网络功能 378
11.2.1 调用WNetGetUniversalName 378
11.2.2 枚举网络资源 384
11.2.3 使用Shell32浏览对话 395
11.2.4 LAN Manager API 399
11.3 小结 405
12.1 内置VBA磁盘和文件函数 406
第12章 使用磁盘和文件 406
12.1.1 Dir函数 407
12.1.2 使用文件属性 408
12.1.3 进行磁盘文件操作 411
12.1.4 一些文件信息: FileLen和FileDateTime 412
12.1.5 目录管理 412
12.2 文件I/O 415
12.2.1 取得文件句柄 415
12.2.2 使用Open函数 416
12.2.3 文件位置操作 417
12.2.4 读取和写人的语句 418
12.3 Windows API: 实力所在 424
12.3.1 比较API函数与VBA函数 424
12.3.2 取得磁盘信息 425
12.3.3 玩玩路径 432
12.3.4 Dir的硬核替换 436
12.3.5 Windows Notification(通知)函数 441
12.3.6 搜索文件 446
12.3.7 取得临时文件名 452
12.3.8 取得文件的(Windows)句柄 453
12.3.9 Windows API的日期和时间 456
12.3.10 使用文件时间 459
12.3.11 使用Windows公共对话 463
12.4 目录和文件的对象模型 468
12.4.1 使用类 468
12.4.2 产生子目录 468
12.4.3 建立新目录 470
12.4.4 复制目录 471
12.5 小结 472
12.4.5 扩展对象模型 472
第13章 向应用程序加进多媒体 474
13.1 Windows多媒体简介 475
13.1.1 多媒体服务和MCI 475
13.2 一步多媒体 477
13.2.1 嘟嘟一声 477
13.2.2 MessageBeep: 更进一步 477
13.2.3 用PlaySound播放波形声频 478
13.3.1 使用MCI设备 485
13.3 了解媒介控制接口 485
13.3.2 MCI命令字符串接口 488
13.3.3 MCI命令消息接口 490
13.4 让MCI工作 497
13.4.1 播放声频光盘 497
13.4.2 记录和播放波形声频 503
13.4.3 将数字式视频放进窗口 512
13.5 小结 517
附录A Reddick VBA (RVBA)命名规则 519
附录B 访问DLL和Windows API 529