第1章 绪论
1.1 关于本书
1.2 本书适合的读者群
1.3 Excel开发人员分类
1.4 Excel——应用程序的开发平台
1.4.1 用作数据输入和输出表示层的工作表
1.4.2 用作简单数据存储的工作表
1.4.3 VBA代码与用户窗体
1.4.4 用作声明式编程语言的工作表
1.4.5 Excel对象模型
1.5 本书结构
1.6 本书案例
1.7 支持的软件版本
1.8 关于字体风格
1.9 关于配套资源
1.10 帮助与支持
1.11 专业Excel开发网站
1.12 读者反馈
第2章 应用程序的结构
2.1 基本概念
2.1.1 无编码的应用程序
2.1.2 自动化工作簿
2.1.3 通用加载宏
2.1.4 特定程序中的加载宏
2.1.5 独立式应用程序
2.1.6 可用的技术
2.2 本章小结
第3章 Excel与VBA开发的最佳惯例
3.1 命名规则
3.1.1 一个命名规则惯例
3.1.2 命名规则惯例
3.1.3 过程
3.1.4 模块、类和用户窗体
3.1.5 工作表和图表
3.1.6 Visual Basic工程
3.1.7 Excel用户接口的命名规则
3.1.8 不必使用命名规则的特殊情况
3.2 关于程序结构与组织的最佳惯例
3.2.1 应用程序的结构
3.2.2 过程化应用程序的组织
3.3 一般性应用程序开发的最佳惯例
3.3.1 代码注释
3.3.2 代码的可读性
3.3.3 通用的VBA编程惯例
3.3.4 修改控制
3.4 本章小结
第4章 工作表设计
4.1 工作表用户接口设计的原则
4.2 程序行和程序列:用户接口设计的基本技术
4.3 预定义名称
4.3.1 命名常量
4.3.2 命名区域
4.3.3 命名公式
4.3.4 预定义名称的作用范围
4.4 样式
4.4.1 创建和使用样式
4.4.2 修改样式
4.4.3 在工具栏中添加样式下拉框
4.5 用户接口中的画图技术
4.5.1 使用边框创建特殊效果
4.5.2 创建具有良好格式的表格
4.5.3 显示帮助文本的单元格批注
4.5.4 使用图形
4.6 数据检验
4.6.1 数据的唯一性检验
4.6.2 级联列表
4.7 条件格式
4.7.1 创建动态表
4.7.2 警示错误
4.8 在工作表中使用控件
4.8.1 窗体控件的优点
4.8.2 Active控件的优点
4.9 实例分析
4.9.1 隐藏行和列
4.9.2 预定义名称
4.9.3 样式
4.9.4 用户接口的绘图技术
4.9.5 数据检验
4.9.6 条件格式
4.10 本章小结
第5章 函数、通用加载宏和特定应用的加载宏
5.1 应用程序的四个阶段
5.1.1 开发与维护
5.1.2 启动
5.1.3 运行
5.1.4 关闭
5.2 函数库加载宏
5.2.1 用户自定义函数(UDF)示例
5.2.2 UDF的命名规则
5.2.3 让UDF看起来更像内部函数
5.2.4 为函数库加载宏创建友好的名称和描述信息
5.2.5 关于UDF的一些重要细节
5.2.6 VBA UDF问题
5.3 通用加载宏
5.4 特定应用的加载宏
5.4.1 使用表驱动的方法管理工作表用户接口(UI)
5.4.2 使用VBA动态修改用户接口工作表
5.5 实例分析
5.5.1 功能特性
5.5.2 应用程序的组织
5.6 本章小结
第6章 独立式应用程序
6.1 独立式应用程序的结构
6.1.1 启动与关闭
6.1.2 自定义用户界面
6.1.3 处理与分析
6.1.4 显示结果
6.2 实例分析
6.2.1 PETRAS报表
6.3 本章小结
第7章 使用类模块创建对象
7.1 创建对象
7.1.1 类模块的结构
7.2 创建集合
7.2.1 创建集合对象
7.2.2 用地址表示类集合的不足
7.3 捕获事件
7.4 引发事件
7.4.1 家庭关系问题
7.4.2 创建触发类
7.5 实例分析
7.5.1 PETRAS时刻表
7.5.2 PETRAS报表
7.6 本章小结
第8章 应用程序的结构
8.1 命令栏设计
8.2 表驱动命令栏
8.2.1 表驱动命令栏构建器简介
8.2.2 命令栏定义表
8.2.3 小结
8.3 综合应用示例
8.3.1 在工作表菜单栏中添加带子菜单的自定义菜单
8.3.2 添加自定义工具条
8.3.3 添加自定义右击命令栏
8.4 从文件中导入自定义图标
8.4.1 创建用于图标和掩码的位图文件
8.4.2 将位图文件作为命令栏按钮的图标
8.5 使用钩子截获命令栏控件事件
8.5.1 为什么要使用事件钩子
8.5.2 事件钩子的用途
8.5.3 Tag属性的重要性
8.5.4 选择性粘贴命令栏
8.6 实例分析
8.6.1 PETRAS时刻表
8.6.2 PETRAS报表
8.6.3 应用程序的环境
8.6 本章小结
第9章 XML介绍
9.1 XML
9.1.1 XML文件示例
9.1.2 XSD文件示例
9.1.3 Excel 2003的XML特性概述
9.1.4 一个简单的金融模型
9.1.5 创建XML架构定义文件
9.1.6 XML映射
9.1.7 导出和导入XML数据
9.1.8 XML对象模型和事件
9.1.9 早期版本中的XML支持
9.1.10 使用命名空间
9.2 本章小结
第10章 Office 2007 Ribbon用户界面
10.1 RibbonX范式
10.2 Office 2007 Open XML文件格式介绍
10.2.1 Open XML文件格式的结构
10.3 Ribbon设计和编码的最佳惯例
10.3.1 支持工作流程的设计
10.3.2 使用加载项选项卡
10.3.3 在多个加载项之间共享自定义的选项卡和组
10.3.4 keytip属性
10.3.5 管理控件的自定义图标
10.3.6 使用全局回调处理器
10.3.7 无效处理
10.4 表驱动的Ribbon UI自定义
10.4.1 访问customUI XML中的部件
10.5 需要解决的高级问题
10.5.1 为独立式应用程序创建Ribbon UI
10.5.2 隐藏Ribbon UI
10.5.3 确定组合框、下拉框和编辑框控件的大小
10.5.4 工作表导航
10.5.5 使用模板
10.6 进阶阅读
10.6.1 RibbonX:自定义Office 2007 Ribbon
10.7 相关网站
10.7.1 Office开发人员网站中的XML
10.7.2 OpenXMLDeveloper.org
10.7.3 Office良好用户界面开发人员门户网站
10.8 本章小结
第11章 创建跨版本兼容的应用程序
11.1 单个应用程序中的命令栏和Ribbon用户界面
11.1.1 轻量级方法
11.1.2 重量级方法
11.1.3 提取命令栏的处理逻辑
11.1.4 创建Ribbon用户界面加载器
11.1.5 其他注意事项
11.2 Excel 2007开发的其他问题
11.2.1 无法将代码添加到无宏的Excel文件
11.2.2 使用文件系统
11.3 Windows vista的安全和文件夹结构
11.3.1 用户账户控制(UAC)
11.3.2 标准用户账户
11.3.3 公共配置文件
11.3.4 分清Windows XP和Windows Vista
11.4 本章小结
第12章 理解和使用Windows API调用
12.1 概述
12.1.1 查找文档
12.1.2 查找声明
12.1.3 查找常量的值
12.1.4 理解句柄
12.1.5 封装API调用
12.2 与屏幕相关的操作
12.2.1 读取屏幕分辨率
12.2.2 查看像素的尺寸
12.2.3 设备上下文(device context)
12.3 与窗口相关的操作
12.3.1 窗口类
12.3.2 获取窗口
12.3.3 ANSI编码与Unicode编码的比较和Alias子句
12.3.4 查找相关的窗口
12.3.5 窗口消息
12.3.6 更改窗口的图标
12.3.7 改变窗体的样式
12.4 与键盘相关的操作
12.4.1 检验Shift键,Ctrl键,Alt键,Caps Lock键,Num Lock键和Scroll Lock
键的状态
12.4.2 检测某个键是否被按下
12.5 与文件系统和网络相关的操作
12.5.1 查找用户ID
12.5.2 改变UNC路径
12.5.3 查找指定的文件夹
12.5.4 将文件删除到回收站中
12.5.5 浏览文件夹
12.6 实例分析
12.6.1 PETRAS 时刻表
12.6.2 PETRAS报表
12.7 本章小结
第13章 用户窗体设计与范例
13.1 基本原则
13.1.1 简单化
13.1.2 显示界面,而非业务规则
13.1.3 使用类,而非默认实例
13.1.4 提供属性和方法,而非控件
13.2 控件基础
13.2.1 命名
13.2.2 分层
13.2.3 位置
13.2.4 Tab次序和加速键
13.2.5 数据绑定
13.2.6 事件处理
13.2.7 验证
13.3 可视效果
13.3.1 用户窗体的窗口样式
13.3.2 使关闭按钮不可用
13.3.3 在用户窗体上显示图形、图表和艺术字等
13.3.4 锁定与禁用控件
13.3.5 弹出式菜单
13.4 用户窗体的位置和尺寸
13.4.1 靠近单元格
13.4.2 响应不同的分辨率
13.4.3 可调整尺寸的用户窗体
13.4.4 分隔栏
13.5 向导
13.5.1 向导对话框的设计规则
13.5.2 创建一个向导对话框
13.6 动态窗体
13.6.1 用户窗体中的控件子集
13.6.2 代码创建和表驱动的窗体
13.6.3 滚动区域
13.6.4 动态控件的事件处理和控件数组
13.7 无模式用户窗体
13.7.1 闪屏
13.7.2 进度条
13.7.3 与菜单项组合在一起
13.8 特殊控件
13.8.1 组合框
13.8.2 Windows通用控件
13.9 实例分析
13.9.1 PETRAS 时刻表
13.9.2 PETRAS报表
13.10 结论
第14章 接口
14.1 什么是接口
14.2 代码重用
14.3 定义自定义接口
14.4 自定义接口的实现
14.5 自定义接口的使用
14.6 多态性
14.7 提高健壮性
14.8 简化开发
14.8.1 进度条
14.8.2 CProgressBar类
14.9 插件架构
14.10 实例分析
14.10.1 PETRAS 时刻表
14.10.2 PETRAS 报表
14.11 本章小结
第15章 VBA错误处理
15.1 错误处理的概念
15.1.1 未处理错误与已处理错误的比较
15.1.2 Err对象
15.1.3 何为错误处理器
15.1.4 错误处理器的作用域
15.1.5 On Error语句
15.1.6 Resume语句
15.1.7 产生自定义错误
15.2 单个退出点原则
15.3 简单错误处理
15.4 复杂错误处理器的结构
15.4.1 过程错误处理器
15.4.2 不重要的过程
15.5 中央错误处理器
15.6 类和用户窗体中的错误处理
15.6.1 Initialize和Activate事件
15.6.2 Terminate事件
15.7 把它们结合在一起
15.8 实例分析
15.8.1 PETRAS 时刻表
15.8.2 PETRAS报表应用程序
15.9 本章小结
第16章 VBA调试
16.1 基本的VBA调试技术
16.1.1 运行模式和中断模式
16.1.2 调试模式
16.1.3 使用断点(F9)
16.1.4 单步执行代码
16.1.5 改变执行点或设置下一条语句(Ctrl+F9)
16.2 立即窗口(Ctrl+G)
16.2.1 Debug.Print
16.2.2 充分利用立即窗口
16.3 调用堆栈(Ctrl+L)
16.4 监视窗口
16.4.1 设置基本的监视
16.4.2 使用基本的监视
16.4.3 监视类型
16.4.4 监视窗口中的数组、用户自定义类型(UDT)和类
16.4.5 快速监视(Shift+F9)
16.5 本地窗口
16.6 对象浏览器(F2)
16.6.1 基本特征
16.6.2 高级特征
16.7 创建和运行“测试桩”
16.8 使用断言
16.9 程序开发者应当知道的调试快捷键
16.9.1 一般情况
16.9.2 调试模式的代码执行
16.9.3 导航
16.9.4 信息
16.10 本章小结
第17章 优化VBA的性能
17.1 测量性能
17.2 PerfMon实用工具
17.3 创造性思维
17.3.1 做拼图游戏
17.3.2 确定步骤
17.3.3 站在盒子外思考
17.3.4 打破规则
17.3.5 了解数据
17.3.6 提出问题
17.3.7 了解工具
17.4 宏观上的优化
17.4.1 预处理
17.4.2 检查阶数
17.4.3 收紧循环
17.4.4 快速VBA 算法
17.5 在微观上的优化
17.5.1 VBA
17.5.2 Excel
17.6 结论
第18章 数据库开发简介
18.1 数据库简介
18.1.1 为什么使用数据库
18.1.2 关系数据库
18.1.3 基于文件的数据库和客户机-服务器数据库
18.1.4 规范化
18.1.5 什么时候不必规范化
18.1.6 关系与参照完整性
18.1.7 固有的主关键字和人为的主关键字
18.2 SQL简介
18.2.1 SELECT语句
18.2.2 INSERT语句
18.2.3 UPDATE语句
18.2.4 DELETE语句
18.3 用ADO进行数据存取
18.3.1 ActiveX Data Object(ADO)简介
18.3.2 ADO对象模型
18.4 进阶阅读
18.5 本章小结
第19章 Access和SQL Sever数据库编程
19.1 Northwind示例数据库的说明
19.2 设计数据访问层
19.2.1 为什么需要有一个单独的数据访问层
19.2.2 数据访问层的物理设计
19.3 使用Microsoft Access数据库
19.3.1 连接到Access数据库
19.3.2 使用连接字符串
19.3.3 Microsoft Access的数据访问技术
19.4 使用Microsoft SQL Server数据库
19.4.1 连接到SQL Server数据库
19.4.2 连接池
19.4.3 错误处理连接
19.4.4 SQL Server的数据访问
19.4.5 参数刷新
19.4.6 多个记录集
19.4.7 断开连接的记录集
19.5 从Access升迁到SQL Server
19.6 进阶阅读
19.7 实例分析
19.7.1 PETRAS时刻表
19.7.2 PETRAS报表
19.8 本章小结
第20章 数据处理技术
20.1 Excel的数据结构
20.1.1 非结构化区域
20.1.2 结构化区域
20.1.3 Excel 2003的列表
20.1.4 查询表
20.2 数据处理功能
20.2.1 处理的不仅仅是数据
20.2.2 数据透视表缓存
20.2.3 数据透视表
20.2.4 数据合并
20.2.5 高级筛选
20.3 高级函数
20.3.1 数据库函数
20.3.2 数组公式
20.3.3 循环引用
20.4 本章小结
第21章 高级图表技术
21.1 基本技术
21.1.1 组合图表类型
21.1.2 使用多个坐标轴
21.1.3 使用预定义名称来建立图表与数据的连接
21.1.4 伪造它
21.2 VBA技术
21.2.1 在图表坐标系之间进行转换
21.2.2 定位图表中的元素
21.2.3 计算合理的坐标比例
21.3 本章小结
第22章 控制其他Office应用程序
22.1 基本原理
22.1.1 自动化
22.1.2 引用
22.1.3 开发中的技巧
22.1.4 vTable表、早期绑定和后期绑定
22.1.5 处理应用程序实例
22.1.6 性能分析
22.2 主要Office程序的对象模型
22.2.1 Access和数据存取对象
22.2.2 Word应用程序
22.2.3 PowerPoint和MSGraph
22.2.4 Outlook
22.2.5 进阶阅读
22.3 实例分析
22.4 本章小结
第23章 Excel和Visual Basic 6
23.1 创建Hello World ActiveX DLL
23.1.1 创建ActiveX DLL工程
23.1.2 最简单的单向通信程序
23.1.3 更复杂一些的双向通信程序
23.1.4 在Excel显示VB6窗体
23.2 为什么要在Excel VBA工程中使用VB6 ActiveX DLL
23.2.1 代码保护功能
23.2.2 利用VB6窗体
23.2.3 更好的ActiveX控件支持
23.2.4 更好地支持面向对象程序设计
23.2.5 资源文件
23.2.6 VB6的其他特性
23.3 进程内通信与进程外通信
23.3.1 进程内通信
23.3.2 进程外通信
23.4 在VB6 EXE程序中自动化Excel
23.4.1 一个Excel自动化的简单程序
23.4.2 使用VB6 EXE作为Excel应用程序的加载器
23.5 COM外接程序
23.6 “Hello World”COM外接程序
23.7 加载设计器
23.7.1 通用页
23.7.2 高级页
23.8 安装注意事项
23.9 AddinInstance事件
23.9.1 Initialize
23.9.2 OnConnection
23.9.3 OnStartupComplete
23.9.4 OnAddInsUpdate
23.9.5 OnBeginShutdown
23.9.6 OnDisconnection
23.9.7 Terminate
23.10 命令栏的处理
23.10.1 使用命令栏事件钩子
23.10.2 命令栏的结构
23.10.3 自定义工具栏的外观
23.10.4 选择性粘贴栏的COM外接程序
23.11 为什么要使用COM外接程序
23.11.1 提高代码安全
23.11.2 COM外接程序能够与多个应用程序通信
23.11.3 使用独立线程
23.12 自动化外接程序集合
23.12.1 创建IfError的自动化外接程序
23.12.2 使用IfError自动化外接程序
23.12.3 在自动化外接程序中访问Excel应用程序对象
23.13 实例分析 5
23.13.1 在ActiveX DLL中利用资源文件加载图标 5
23.13.2 使用标准EXE程序作为Excel应用程序的加载器
23.14 本章小结 5
第24章 EXCEL和VB.NET 5
24.1 .NET Framework基础
24.2 Visual Basic .NET
24.2.1 Visual Studio的IDE环境
24.2.2 创建一个VB.NET解决方案
24.2.3 结构化的异常处理 5
24.2.4 模块和方法,范围和可见性
24.2.5 变量声明与赋值
24.2.6 创建新的对象实例
24.2.7 使用ByVal或ByRef
24.2.8 在VB.NET中使用向导
24.2.9 在VB.NET的数据类型
24.2.10 在VB.NET中使用数组
24.3 调试 5
24.3.1 设置键盘快捷键 5
24.3.2 启用非托管代码的调试
24.3.3 异常调试助手
24.3.4 对象浏览器(F2)
24.3.5 错误列表窗口(Ctrl+W Ctrl+E)
24.3.6 命令窗口(Ctrl+Alt+A)和立即窗口(Ctrl+G)
24.3.7 输出窗口(Ctrl+Alt+O)
24.3.8 断点(Ctrl+Alt+B)
24.3.9 调用栈(Ctrl+L)
24.3.10 快速监视和监视窗口
24.3.11 异常对话框(Ctrl+Alt+E)
24.3.12 条件编译常数
24.3.13 使用断言
24.4 有用的开发工具
24.4.1 代码区域
24.4.2 代码段管理器(Ctrl+K Ctrl+B)
24.4.3 将文件作为文本插入
24.4.4 任务列表(Ctrl+Alt+K)
24.5 Excel自动操作
24.5.1 主互操作程序集(PIA)
24.5.2 在.NET解决方案中使用Excel 5
24.5.3 使用后期绑定
24.6 .NET解决方案的资源
24.7 用ADO.NET获取数据
24.8 进阶阅读
24.8.1 Programming Microsoft Visual Basic .NET Version 2003
24.8.2 Visual Basic 2008 Programmer’s Reference(Visual Basic 2008程序员手册)
24.9 其他开发工具
24.9.1 MZ-tools
24.9.2 VSNETCodePrint
24.10 Q&A论坛
24.11 实例分析——PETRAS Report Tool.NET
24.11.1 .NET解决方案
24.11.2 Windows窗体的Extender Providers
24.11.3 线程
24.11.4 获取数据
24.11.5 导出数据
24.12 本章小结
第25章 使用VB.NET编写托管COM外接程序
25.1 选择开发工具集
25.2 创建托管的COM外接程序
25.2.1 剖析托管的COM外接程序
25.3 构建用户界面
25.3.1 命令栏用户接口的处理
25.3.2 Ribbon用户界面的处理
25.4 创建托管的自动化外接程序
25.4.1 创建与Excel应用程序对象交互的自动化外接程序
25.4.2 为什么不应当使用.NET来创建自动化外接程序
25.5 手工注册COM外接程序和卸载其注册信息
25.6 在VB.NET中使用类
25.6.1 创建设计良好的类
25.6.2 属性
25.7 使用ADO将数据导出到Excel
25.8 对COM外接程序进行Shim处理
25.8.1 MSCoree.DLL地狱
25.8.2 隔离
25.8.3 安全
25.8.4 COM Shim向导
25.9 相关的博客
25.9.1 XL-Dennis—VSTO & .NET & Excel
25.9.2 Andrew Whitechapel
25.10 其他开发工具
25.10.1 Add-in Express for Microsoft Office and .NET
25.10.2 AddinSpy
25.11 实例分析——PETRAS Report Tool.NET
25.11.1 介绍
25.11.2 加载和卸载COM外接程序
25.11.3 自定义菜单 6
25.11.4 在Excel中显示Windows窗体 6
25.12 本章小结
第26章 使用Visual Studio的Office工具开发解决方案
26.1 何为VSTO
26.1.1 VSTO的项目模板
26.2 应当何时使用VSTO 6
26.3 使用VSTO外接程序 6
26.3.1 创建我们的第一个VSTO外接程序 6
26.3.2 Ribbon可视设计器
26.3.3 自定义任务窗格 6
26.3.4 VSTO自动化外接程序
26.4 使用VSTO模板和工作簿的解决方案
26.4.1 宿主元素和宿主控件
26.4.2 Windows窗体控件
26.4.3 服务器端的VSTO解决方案
26.4.4 创建第一个VSTO工作簿解决方案
26.4.5 使用NamedRange宿主控件
26.4.6 使用ListObject宿主控件
26.5 部署与安全
26.5.1 使用ClickOnce部署VSTO解决方案介绍
26.6 进阶阅读
26.7 相关的门户与博客
26.7.1 微软的VSTO门户
26.8.2 Office Development with Visual Studio
26.8 其他开发工具
26.8.1 Microsoft Visual Studio Tools for the Office System Power Tools
26.9 本章小结
第27章 XLL和C API函数
27.1 为什么需要创建基于XLL的工作表函数
27.2 在Visual Studio中创建XLL工程
27.3 XLL的结构
27.3.1 函数表
27.3.2 DLLMain函数
27.3.3 标准XLL回调函数
27.3.4 其他XLL回调函数
27.4 XLOPER和OPER数据类型
27.5 Excel4函数
27.6 常用的C API函数
27.6.1 xlFree
27.6.2 xlCoerce
27.6.3 xlGetName
27.7 XLOPER变量和内存管理
27.8 自定义工作表函数的注册和取消
27.9 函数应用举例
27.10 工作表函数的调试
27.11 其他相关问题
27.11.1 COM自动化用户应该注意的问题
27.11.2 C++关键字与XLOPER定义的冲突
27.12 其他学习资源
27.12.1 MSDN中的Excel2007 SDK
27.12.2 Financial Applications Using Excel Add-in Development in C\/C++
27.12.3 Laurent Longre的网站 (法语网站)
27.12.4 微软的Excel公共新闻组
27.12.5 Planatech XLL+
27.12.6 Keith Lewis的资源软件“Object-Oriented C++ Wrapper for the Excel C API”
27.12.7 Managed XLL
27.13 本章小结
第28章 Excel和Web服务
28.1 Web服务
28.1.1 使用VB.NET创建Web服务
28.1.2 从Excel使用Web服务
28.2 实例分析
28.2.1 PETRAS Web服务
28.2.2 PETRAS Timesheet
28.3 本章小结
第29章 帮助、安全、打包和发布
29.1 为应用程序提供帮助
29.1.1 概述
29.1.2 开始设计帮助文件
29.1.3 编写帮助内容
29.1.4 在VBA中显示帮助
29.2 安全
29.2.1 Excel的安全性
29.2.2 检查网络分组
29.2.3 宏安全与数字签名
29.2.4 数字签名的替代方法
29.3 打包
29.3.1 安装位置
29.3.2 安装要求
29.3.3 安装方式
29.4 发布
29.4.1 初始版本
29.4.2 升级
29.4.3 实时升级
29.5 本章小结
展开