第1章 绪论 1
1.1 关于本书 1
1.2 本书适合的读者群 1
1.3 Excel开发人员分类 2
1.4 Excel——应用程序的开发平台 3
1.4.1 用作数据输入和输出表示层的工作表 3
1.4.2 用作简单数据存储的工作表 4
1.4.3 VBA代码与用户窗体 4
1.4.4 用作声明式编程语言的工作表 4
1.4.5 Excel对象模型 5
1.5 本书结构 5
1.6 本书案例 6
1.7 支持的软件版本 6
1.8 关于字体风格 7
1.9 关于配套资源 7
1.10 帮助与支持 8
1.11 专业Excel开发网站 8
1.12 读者反馈 9
第2章 应用程序的结构 10
2.1 基本概念 10
2.1.1 无编码的应用程序 10
2.1.2 自动化工作簿 11
2.1.3 通用加载宏 12
2.1.4 特定程序中的加载宏 14
2.1.5 独立式应用程序 15
2.1.6 可用的技术 17
2.2 本章小结 17
第3章 Excel与VBA开发的最佳惯例 19
3.1 命名规则 19
3.1.1 一个命名规则惯例 20
3.1.2 命名规则惯例 23
3.1.3 过程 24
3.1.4 模块、类和用户窗体 25
3.1.5 工作表和图表 25
3.1.6 Visual Basic工程 26
3.1.7 Excel用户接口的命名规则 26
3.1.8 不必使用命名规则的特殊情况 27
3.2 关于程序结构与组织的最佳惯例 28
3.2.1 应用程序的结构 28
3.2.2 过程化应用程序的组织 29
3.3 一般性应用程序开发的最佳惯例 31
3.3.1 代码注释 31
3.3.2 代码的可读性 34
3.3.3 通用的VBA编程惯例 35
3.3.4 修改控制 44
3.4 本章小结 45
第4章 工作表设计 46
4.1 工作表用户接口设计的原则 46
4.2 程序行和程序列:用户接口设计的基本技术 47
4.3 预定义名称 47
4.3.1 命名常量 48
4.3.2 命名区域 48
4.3.3 命名公式 50
4.3.4 预定义名称的作用范围 51
4.4 样式 52
4.4.1 创建和使用样式 52
4.4.2 修改样式 54
4.4.3 在工具栏中添加样式下拉框 54
4.5 用户接口中的画图技术 55
4.5.1 使用边框创建特殊效果 55
4.5.2 创建具有良好格式的表格 55
4.5.3 显示帮助文本的单元格批注 56
4.5.4 使用图形 57
4.6 数据检验 58
4.6.1 数据的唯一性检验 58
4.6.2 级联列表 59
4.7 条件格式 60
4.7.1 创建动态表 60
4.7.2 警示错误 62
4.8 在工作表中使用控件 64
4.8.1 窗体控件的优点 65
4.8.2 Active控件的优点 65
4.9 实例分析 65
4.9.1 隐藏行和列 66
4.9.2 预定义名称 67
4.9.3 样式 67
4.9.4 用户接口的绘图技术 67
4.9.5 数据检验 68
4.9.6 条件格式 68
4.10 本章小结 69
第5章 函数、通用加载宏和特定应用的加载宏 70
5.1 应用程序的四个阶段 70
5.1.1 开发与维护 70
5.1.2 启动 71
5.1.3 运行 71
5.1.4 关闭 72
5.2 函数库加载宏 72
5.2.1 用户自定义函数(UDF)示例 72
5.2.2 UDF的命名规则 73
5.2.3 让UDF看起来更像内部函数 73
5.2.4 为函数库加载宏创建友好的名称和描述信息 75
5.2.5 关于UDF的一些重要细节 76
5.2.6 VBA UDF问题 76
5.3 通用加载宏 76
5.4 特定应用的加载宏 77
5.4.1 使用表驱动的方法管理工作表用户接口(UI) 77
5.4.2 使用VBA动态修改用户接口工作表 81
5.5 实例分析 81
5.5.1 功能特性 81
5.5.2 应用程序的组织 91
5.6 本章小结 91
第6章 独立式应用程序 92
6.1 独立式应用程序的结构 92
6.1.1 启动与关闭 93
6.1.2 自定义用户界面 99
6.1.3 处理与分析 103
6.1.4 显示结果 104
6.2 实例分析 104
6.2.1 PETRAS报表 104
6.3 本章小结 109
第7章 使用类模块创建对象 110
7.1 创建对象 110
7.1.1 类模块的结构 112
7.2 创建集合 113
7.2.1 创建集合对象 115
7.2.2 用地址表示类集合的不足 117
7.3 捕获事件 118
7.4 引发事件 120
7.4.1 家庭关系问题 122
7.4.2 创建触发类 124
7.5 实例分析 126
7.5.1 PETRAS时刻表 126
7.5.2 PETRAS报表 130
7.6 本章小结 131
第8章 应用程序的结构 132
8.1 命令栏设计 132
8.2 表驱动命令栏 133
8.2.1 表驱动命令栏构建器简介 133
8.2.2 命令栏定义表 134
8.2.3 小结 146
8.3 综合应用示例 146
8.3.1 在工作表菜单栏中添加带子菜单的自定义菜单 147
8.3.2 添加自定义工具条 149
8.3.3 添加自定义右击命令栏 151
8.4 从文件中导入自定义图标 152
8.4.1 创建用于图标和掩码的位图文件 153
8.4.2 将位图文件作为命令栏按钮的图标 154
8.5 使用钩子截获命令栏控件事件 155
8.5.1 为什么要使用事件钩子 155
8.5.2 事件钩子的用途 155
8.5.3 Tag属性的重要性 156
8.5.4 选择性粘贴命令栏 157
8.6 实例分析 161
8.6.1 PETRAS时刻表 161
8.6.2 PETRAS报表 163
8.6.3 应用程序的环境 163
8.6 本章小结 166
第9章 XML介绍 167
9.1 XML 167
9.1.1 XML文件示例 168
9.1.2 XSD文件示例 169
9.1.3 Excel 2003的XML特性概述 171
9.1.4 一个简单的金融模型 172
9.1.5 创建XML架构定义文件 173
9.1.6 XML映射 174
9.1.7 导出和导入XML数据 176
9.1.8 XML对象模型和事件 177
9.1.9 早期版本中的XML支持 181
9.1.10 使用命名空间 182
9.2 本章小结 183
第10章 Office 2007 Ribbon用户界面 184
10.1 RibbonX范式 184
10.2 Office 2007 Open XML文件格式介绍 185
10.2.1 Open XML文件格式的结构 185
10.3 Ribbon设计和编码的最佳惯例 187
10.3.1 支持工作流程的设计 187
10.3.2 使用加载项选项卡 188
10.3.3 在多个加载项之间共享自定义的选项卡和组 188
10.3.4 keytip属性 192
10.3.5 管理控件的自定义图标 192
10.3.6 使用全局回调处理器 193
10.3.7 无效处理 194
10.4 表驱动的Ribbon UI自定义 196
10.4.1 访问customUI XML中的部件 196
10.5 需要解决的高级问题 197
10.5.1 为独立式应用程序创建Ribbon UI 197
10.5.2 隐藏Ribbon UI 199
10.5.3 确定组合框、下拉框和编辑框控件的大小 200
10.5.4 工作表导航 200
10.5.5 使用模板 203
10.6 进阶阅读 203
10.6.1 RibbonX:自定义Office 2007 Ribbon 203
10.7 相关网站 203
10.7.1 Office开发人员网站中的XML 203
10.7.2 OpenXMLDeveloper.org 204
10.7.3 Office良好用户界面开发人员门户网站 204
10.8 本章小结 204
第11章 创建跨版本兼容的应用程序 205
11.1 单个应用程序中的命令栏和Ribbon用户界面 205
11.1.1 轻量级方法 205
11.1.2 重量级方法 208
11.1.3 提取命令栏的处理逻辑 208
11.1.4 创建Ribbon用户界面加载器 211
11.1.5 其他注意事项 216
11.2 Excel 2007开发的其他问题 216
11.2.1 无法将代码添加到无宏的Excel文件 216
11.2.2 使用文件系统 217
11.3 Windows vista的安全和文件夹结构 222
11.3.1 用户账户控制(UAC) 222
11.3.2 标准用户账户 223
11.3.3 公共配置文件 224
11.3.4 分清Windows XP和Windows Vista 224
11.4 本章小结 224
第12章 理解和使用Windows API调用 225
12.1 概述 225
12.1.1 查找文档 226
12.1.2 查找声明 226
12.1.3 查找常量的值 226
12.1.4 理解句柄 227
12.1.5 封装API调用 228
12.2 与屏幕相关的操作 229
12.2.1 读取屏幕分辨率 230
12.2.2 查看像素的尺寸 230
12.2.3 设备上下文(device context) 230
12.3 与窗口相关的操作 232
12.3.1 窗口类 232
12.3.2 获取窗口 233
12.3.3 ANSI编码与Unicode编码的比较和Alias子句 233
12.3.4 查找相关的窗口 234
12.3.5 窗口消息 236
12.3.6 更改窗口的图标 237
12.3.7 改变窗体的样式 238
12.4 与键盘相关的操作 238
12.4.1 检验Shift键,Ctrl键,Alt键,Caps Lock键,Num Lock键和Scroll Lock
键的状态 239
12.4.2 检测某个键是否被按下 240
12.5 与文件系统和网络相关的操作 242
12.5.1 查找用户ID 243
12.5.2 改变UNC路径 244
12.5.3 查找指定的文件夹 244
12.5.4 将文件删除到回收站中 246
12.5.5 浏览文件夹 247
12.6 实例分析 253
12.6.1 PETRAS 时刻表 253
12.6.2 PETRAS报表 254
12.7 本章小结 255
第13章 用户窗体设计与范例 256
13.1 基本原则 256
13.1.1 简单化 256
13.1.2 显示界面,而非业务规则 256
13.1.3 使用类,而非默认实例 259
13.1.4 提供属性和方法,而非控件 261
13.2 控件基础 263
13.2.1 命名 263
13.2.2 分层 263
13.2.3 位置 263
13.2.4 Tab次序和加速键 264
13.2.5 数据绑定 264
13.2.6 事件处理 264
13.2.7 验证 266
13.3 可视效果 269
13.3.1 用户窗体的窗口样式 269
13.3.2 使关闭按钮不可用 272
13.3.3 在用户窗体上显示图形、图表和艺术字等 272
13.3.4 锁定与禁用控件 273
13.3.5 弹出式菜单 274
13.4 用户窗体的位置和尺寸 275
13.4.1 靠近单元格 275
13.4.2 响应不同的分辨率 276
13.4.3 可调整尺寸的用户窗体 277
13.4.4 分隔栏 278
13.5 向导 280
13.5.1 向导对话框的设计规则 280
13.5.2 创建一个向导对话框 281
13.6 动态窗体 282
13.6.1 用户窗体中的控件子集 283
13.6.2 代码创建和表驱动的窗体 283
13.6.3 滚动区域 286
13.6.4 动态控件的事件处理和控件数组 286
13.7 无模式用户窗体 289
13.7.1 闪屏 289
13.7.2 进度条 290
13.7.3 与菜单项组合在一起 291
13.8 特殊控件 293
13.8.1 组合框 293
13.8.2 Windows通用控件 296
13.9 实例分析 297
13.9.1 PETRAS 时刻表 297
13.9.2 PETRAS报表 297
13.10 结论 298
第14章 接口 299
14.1 什么是接口 299
14.2 代码重用 300
14.3 定义自定义接口 302
14.4 自定义接口的实现 303
14.5 自定义接口的使用 304
14.6 多态性 305
14.7 提高健壮性 309
14.8 简化开发 309
14.8.1 进度条 310
14.8.2 CProgressBar类 314
14.9 插件架构 318
14.10 实例分析 319
14.10.1 PETRAS 时刻表 319
14.10.2 PETRAS 报表 319
14.11 本章小结 319
第15章 VBA错误处理 321
15.1 错误处理的概念 321
15.1.1 未处理错误与已处理错误的比较 321
15.1.2 Err对象 321
15.1.3 何为错误处理器 322
15.1.4 错误处理器的作用域 323
15.1.5 On Error语句 324
15.1.6 Resume语句 326
15.1.7 产生自定义错误 327
15.2 单个退出点原则 327
15.3 简单错误处理 328
15.4 复杂错误处理器的结构 328
15.4.1 过程错误处理器 329
15.4.2 不重要的过程 331
15.5 中央错误处理器 332
15.6 类和用户窗体中的错误处理 337
15.6.1 Initialize和Activate事件 337
15.6.2 Terminate事件 338
15.7 把它们结合在一起 338
15.8 实例分析 343
15.8.1 PETRAS 时刻表 343
15.8.2 PETRAS报表应用程序 345
15.9 本章小结 350
第16章 VBA调试 351
16.1 基本的VBA调试技术 351
16.1.1 运行模式和中断模式 351
16.1.2 调试模式 352
16.1.3 使用断点(F9) 355
16.1.4 单步执行代码 355
16.1.5 改变执行点或设置下一条语句(Ctrl+F9) 357
16.2 立即窗口(Ctrl+G) 358
16.2.1 Debug.Print 358
16.2.2 充分利用立即窗口 359
16.3 调用堆栈(Ctrl+L) 360
16.4 监视窗口 361
16.4.1 设置基本的监视 361
16.4.2 使用基本的监视 362
16.4.3 监视类型 363
16.4.4 监视窗口中的数组、用户自定义类型(UDT)和类 365
16.4.5 快速监视(Shift+F9) 367
16.5 本地窗口 367
16.6 对象浏览器(F2) 368
16.6.1 基本特征 369
16.6.2 高级特征 369
16.7 创建和运行“测试桩” 370
16.8 使用断言 372
16.9 程序开发者应当知道的调试快捷键 373
16.9.1 一般情况 373
16.9.2 调试模式的代码执行 374
16.9.3 导航 374
16.9.4 信息 375
16.10 本章小结 375
第17章 优化VBA的性能 376
17.1 测量性能 376
17.2 PerfMon实用工具 377
17.3 创造性思维 380
17.3.1 做拼图游戏 380
17.3.2 确定步骤 380
17.3.3 站在盒子外思考 380
17.3.4 打破规则 382
17.3.5 了解数据 382
17.3.6 提出问题 383
17.3.7 了解工具 383
17.4 宏观上的优化 383
17.4.1 预处理 384
17.4.2 检查阶数 384
17.4.3 收紧循环 386
17.4.4 快速VBA 算法 386
17.5 在微观上的优化 391
17.5.1 VBA 392
17.5.2 Excel 394
17.6 结论 396
第18章 数据库开发简介 398
18.1 数据库简介 398
18.1.1 为什么使用数据库 398
18.1.2 关系数据库 399
18.1.3 基于文件的数据库和客户机-服务器数据库 399
18.1.4 规范化 399
18.1.5 什么时候不必规范化 404
18.1.6 关系与参照完整性 404
18.1.7 固有的主关键字和人为的主关键字 407
18.2 SQL简介 408
18.2.1 SELECT语句 408
18.2.2 INSERT语句 409
18.2.3 UPDATE语句 410
18.2.4 DELETE语句 410
18.3 用ADO进行数据存取 411
18.3.1 ActiveX Data Object(ADO)简介 411
18.3.2 ADO对象模型 411
18.4 进阶阅读 420
18.5 本章小结 421
第19章 Access和SQL Sever数据库编程 422
19.1 Northwind示例数据库的说明 422
19.2 设计数据访问层 423
19.2.1 为什么需要有一个单独的数据访问层 423
19.2.2 数据访问层的物理设计 423
19.3 使用Microsoft Access数据库 426
19.3.1 连接到Access数据库 426
19.3.2 使用连接字符串 427
19.3.3 Microsoft Access的数据访问技术 427
19.4 使用Microsoft SQL Server数据库 433
19.4.1 连接到SQL Server数据库 433
19.4.2 连接池 434
19.4.3 错误处理连接 435
19.4.4 SQL Server的数据访问 436
19.4.5 参数刷新 438
19.4.6 多个记录集 438
19.4.7 断开连接的记录集 440
19.5 从Access升迁到SQL Server 441
19.6 进阶阅读 444
19.7 实例分析 444
19.7.1 PETRAS时刻表 445
19.7.2 PETRAS报表 451
19.8 本章小结 452
第20章 数据处理技术 453
20.1 Excel的数据结构 453
20.1.1 非结构化区域 453
20.1.2 结构化区域 454
20.1.3 Excel 2003的列表 455
20.1.4 查询表 455
20.2 数据处理功能 457
20.2.1 处理的不仅仅是数据 457
20.2.2 数据透视表缓存 458
20.2.3 数据透视表 458
20.2.4 数据合并 461
20.2.5 高级筛选 462
20.3 高级函数 465
20.3.1 数据库函数 465
20.3.2 数组公式 466
20.3.3 循环引用 469
20.4 本章小结 470
第21章 高级图表技术 471
21.1 基本技术 471
21.1.1 组合图表类型 471
21.1.2 使用多个坐标轴 473
21.1.3 使用预定义名称来建立图表与数据的连接 473
21.1.4 伪造它 479
21.2 VBA技术 481
21.2.1 在图表坐标系之间进行转换 481
21.2.2 定位图表中的元素 483
21.2.3 计算合理的坐标比例 484
21.3 本章小结 485
第22章 控制其他Office应用程序 486
22.1 基本原理 486
22.1.1 自动化 486
22.1.2 引用 487
22.1.3 开发中的技巧 487
22.1.4 vTable表、早期绑定和后期绑定 489
22.1.5 处理应用程序实例 491
22.1.6 性能分析 496
22.2 主要Office程序的对象模型 498
22.2.1 Access和数据存取对象 498
22.2.2 Word应用程序 500
22.2.3 PowerPoint和MSGraph 502
22.2.4 Outlook 505
22.2.5 进阶阅读 508
22.3 实例分析 509
22.4 本章小结 509
第23章 Excel和Visual Basic 6 510
23.1 创建Hello World ActiveX DLL 510
23.1.1 创建ActiveX DLL工程 511
23.1.2 最简单的单向通信程序 512
23.1.3 更复杂一些的双向通信程序 514
23.1.4 在Excel显示VB6窗体 517
23.2 为什么要在Excel VBA工程中使用VB6 ActiveX DLL 521
23.2.1 代码保护功能 521
23.2.2 利用VB6窗体 521
23.2.3 更好的ActiveX控件支持 522
23.2.4 更好地支持面向对象程序设计 527
23.2.5 资源文件 530
23.2.6 VB6的其他特性 530
23.3 进程内通信与进程外通信 530
23.3.1 进程内通信 530
23.3.2 进程外通信 531
23.4 在VB6 EXE程序中自动化Excel 531
23.4.1 一个Excel自动化的简单程序 531
23.4.2 使用VB6 EXE作为Excel应用程序的加载器 536
23.5 COM外接程序 536
23.6 “Hello World”COM外接程序 537
23.7 加载设计器 539
23.7.1 通用页 540
23.7.2 高级页 541
23.8 安装注意事项 541
23.9 AddinInstance事件 542
23.9.1 Initialize 543
23.9.2 OnConnection 543
23.9.3 OnStartupComplete 544
23.9.4 OnAddInsUpdate 544
23.9.5 OnBeginShutdown 544
23.9.6 OnDisconnection 544
23.9.7 Terminate 544
23.10 命令栏的处理 545
23.10.1 使用命令栏事件钩子 545
23.10.2 命令栏的结构 545
23.10.3 自定义工具栏的外观 546
23.10.4 选择性粘贴栏的COM外接程序 546
23.11 为什么要使用COM外接程序 547
23.11.1 提高代码安全 547
23.11.2 COM外接程序能够与多个应用程序通信 547
23.11.3 使用独立线程 548
23.12 自动化外接程序集合 548
23.12.1 创建IfError的自动化外接程序 548
23.12.2 使用IfError自动化外接程序 549
23.12.3 在自动化外接程序中访问Excel应用程序对象 549
23.13 实例分析 550
23.13.1 在ActiveX DLL中利用资源文件加载图标 550
23.13.2 使用标准EXE程序作为Excel应用程序的加载器 554
23.14 本章小结 559
第24章 EXCEL和VB.NET 560
24.1 .NET Framework基础 561
24.2 Visual Basic .NET 562
24.2.1 Visual Studio的IDE环境 563
24.2.2 创建一个VB.NET解决方案 565
24.2.3 结构化的异常处理 569
24.2.4 模块和方法,范围和可见性 572
24.2.5 变量声明与赋值 572
24.2.6 创建新的对象实例 573
24.2.7 使用ByVal或ByRef 575
24.2.8 在VB.NET中使用向导 575
24.2.9 在VB.NET的数据类型 575
24.2.10 在VB.NET中使用数组 576
24.3 调试 580
24.3.1 设置键盘快捷键 580
24.3.2 启用非托管代码的调试 581
24.3.3 异常调试助手 581
24.3.4 对象浏览器(F2) 582
24.3.5 错误列表窗口(Ctrl+W Ctrl+E) 582
24.3.6 命令窗口(Ctrl+Alt+A)和立即窗口(Ctrl+G) 582
24.3.7 输出窗口(Ctrl+Alt+O) 583
24.3.8 断点(Ctrl+Alt+B) 583
24.3.9 调用栈(Ctrl+L) 584
24.3.10 快速监视和监视窗口 584
24.3.11 异常对话框(Ctrl+Alt+E) 584
24.3.12 条件编译常数 585
24.3.13 使用断言 586
24.4 有用的开发工具 586
24.4.1 代码区域 586
24.4.2 代码段管理器(Ctrl+K Ctrl+B) 586
24.4.3 将文件作为文本插入 587
24.4.4 任务列表(Ctrl+Alt+K) 587
24.5 Excel自动操作 588
24.5.1 主互操作程序集(PIA) 588
24.5.2 在.NET解决方案中使用Excel 589
24.5.3 使用后期绑定 593
24.6 .NET解决方案的资源 593
24.7 用ADO.NET获取数据 594
24.8 进阶阅读 598
24.8.1 Programming Microsoft Visual Basic .NET Version 2003 598
24.8.2 Visual Basic 2008 Programmer’s Reference(Visual Basic 2008程序员手册) 599
24.9 其他开发工具 599
24.9.1 MZ-tools 599
24.9.2 VSNETCodePrint 599
24.10 Q&A论坛 599
24.11 实例分析——PETRAS Report Tool.NET 599
24.11.1 .NET解决方案 601
24.11.2 Windows窗体的Extender Providers 603
24.11.3 线程 605
24.11.4 获取数据 607
24.11.5 导出数据 608
24.12 本章小结 611
第25章 使用VB.NET编写托管COM外接程序 612
25.1 选择开发工具集 612
25.2 创建托管的COM外接程序 613
25.2.1 剖析托管的COM外接程序 614
25.3 构建用户界面 626
25.3.1 命令栏用户接口的处理 626
25.3.2 Ribbon用户界面的处理 633
25.4 创建托管的自动化外接程序 639
25.4.1 创建与Excel应用程序对象交互的自动化外接程序 639
25.4.2 为什么不应当使用.NET来创建自动化外接程序 643
25.5 手工注册COM外接程序和卸载其注册信息 648
25.6 在VB.NET中使用类 648
25.6.1 创建设计良好的类 649
25.6.2 属性 652
25.7 使用ADO将数据导出到Excel 654
25.8 对COM外接程序进行Shim处理 657
25.8.1 MSCoree.DLL地狱 657
25.8.2 隔离 657
25.8.3 安全 658
25.8.4 COM Shim向导 658
25.9 相关的博客 663
25.9.1 XL-Dennis—VSTO & .NET & Excel 663
25.9.2 Andrew Whitechapel 664
25.10 其他开发工具 664
25.10.1 Add-in Express for Microsoft Office and .NET 664
25.10.2 AddinSpy 664
25.11 实例分析——PETRAS Report Tool.NET 664
25.11.1 介绍 664
25.11.2 加载和卸载COM外接程序 665
25.11.3 自定义菜单 667
25.11.4 在Excel中显示Windows窗体 670
25.12 本章小结 671
第26章 使用Visual Studio的Office工具开发解决方案 672
26.1 何为VSTO 672
26.1.1 VSTO的项目模板 675
26.2 应当何时使用VSTO 678
26.3 使用VSTO外接程序 680
26.3.1 创建我们的第一个VSTO外接程序 680
26.3.2 Ribbon可视设计器 687
26.3.3 自定义任务窗格 689
26.3.4 VSTO自动化外接程序 695
26.4 使用VSTO模板和工作簿的解决方案 695
26.4.1 宿主元素和宿主控件 696
26.4.2 Windows窗体控件 697
26.4.3 服务器端的VSTO解决方案 697
26.4.4 创建第一个VSTO工作簿解决方案 698
26.4.5 使用NamedRange宿主控件 699
26.4.6 使用ListObject宿主控件 700
26.5 部署与安全 702
26.5.1 使用ClickOnce部署VSTO解决方案介绍 703
26.6 进阶阅读 709
26.7 相关的门户与博客 709
26.7.1 微软的VSTO门户 709
26.8.2 Office Development with Visual Studio 709
26.8 其他开发工具 709
26.8.1 Microsoft Visual Studio Tools for the Office System Power Tools 709
26.9 本章小结 710
第27章 XLL和C API函数 711
27.1 为什么需要创建基于XLL的工作表函数 711
27.2 在Visual Studio中创建XLL工程 711
27.3 XLL的结构 716
27.3.1 函数表 716
27.3.2 DLLMain函数 719
27.3.3 标准XLL回调函数 719
27.3.4 其他XLL回调函数 721
27.4 XLOPER和OPER数据类型 722
27.5 Excel4函数 726
27.6 常用的C API函数 727
27.6.1 xlFree 727
27.6.2 xlCoerce 728
27.6.3 xlGetName 728
27.7 XLOPER变量和内存管理 728
27.8 自定义工作表函数的注册和取消 729
27.9 函数应用举例 731
27.10 工作表函数的调试 733
27.11 其他相关问题 734
27.11.1 COM自动化用户应该注意的问题 734
27.11.2 C++关键字与XLOPER定义的冲突 734
27.12 其他学习资源 734
27.12.1 MSDN中的Excel2007 SDK 734
27.12.2 Financial Applications Using Excel Add-in Development in C/C++ 735
27.12.3 Laurent Longre的网站 (法语网站) 735
27.12.4 微软的Excel公共新闻组 735
27.12.5 Planatech XLL+ 735
27.12.6 Keith Lewis的资源软件“Object-Oriented C++ Wrapper for the Excel C API” 735
27.12.7 Managed XLL 735
27.13 本章小结 735
第28章 Excel和Web服务 736
28.1 Web服务 736
28.1.1 使用VB.NET创建Web服务 737
28.1.2 从Excel使用Web服务 739
28.2 实例分析 742
28.2.1 PETRAS Web服务 742
28.2.2 PETRAS Timesheet 746
28.3 本章小结 749
第29章 帮助、安全、打包和发布 750
29.1 为应用程序提供帮助 750
29.1.1 概述 750
29.1.2 开始设计帮助文件 751
29.1.3 编写帮助内容 754
29.1.4 在VBA中显示帮助 754
29.2 安全 756
29.2.1 Excel的安全性 756
29.2.2 检查网络分组 757
29.2.3 宏安全与数字签名 758
29.2.4 数字签名的替代方法 759
29.3 打包 760
29.3.1 安装位置 760
29.3.2 安装要求 761
29.3.3 安装方式 763
29.4 发布 764
29.4.1 初始版本 764
29.4.2 升级 764
29.4.3 实时升级 764
29.5 本章小结 764
· · · · · · (
收起)