|
第1章 绪论 |
|
第2章 应用程序的结构 |
|
2.1 基本概念 |
|
2.1.1 无编码的应用程序 |
|
2.1.2 自动化工作簿 |
|
2.1.3 函数和通用加载宏 |
|
2.1.4 特定程序中的加载宏 |
|
2.1.5 独立式应用程序 |
|
2.1.6 可用的技术 |
|
第3章 Excel与VBA开发的最佳实践 |
|
3.1 命名规则 |
|
3.1.1 命名规则及其重要性 |
|
3.1.2 一个命名规则的样本 |
|
3.1.3 命名规则示例 |
|
3.1.4 过程 |
|
3.1.5 模块.类和用户窗体 |
|
3.1.6 工作表和图表 |
|
3.1.7 VisualBasic工程 |
|
3.1.8 Excel用户接口的命名规则 |
|
3.1.9 不必使用命名规则的特殊情况 |
|
3.2 关于程序结构与组织的最佳实践 |
|
3.2.1 应用程序的结构 |
|
3.2.2 过程化应用程序的组织 |
|
3.3 关于应用程序开发的最佳实践 |
|
3.3.1 代码中的注释 |
|
3.3.2 代码的可读性 |
|
3.3.3 VBA编程实践 |
|
3.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.4.4 在工具栏中添加样式下拉框 |
|
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 条件格式 |
|
第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 VBAUDF问题 |
|
5.3 通用加载宏 |
|
5.4 特定应用的加载宏 |
|
5.4.1 使用表驱动的方法管理工作表用户接口(UI) |
|
5.4.2 使用VBA动态修改用户接口工作表 |
|
5.5 实例分析 |
|
5.5.1 特性 |
|
5.5.2 打开和初始化应用程序 |
|
5.5.3 构建工具栏 |
|
5.5.4 打开和初始化Time-Entry工作簿 |
|
5.5.5 将Time-Entry工作簿副本保存到设定好的数据合并区 |
|
5.5.6 允许用户向Time-Entry工作表添加更多的数据输入行 |
|
5.5.7 允许用户清除数据输入区中的数据,107以便重新使用Timesheet |
|
5.5.8 允许用户关闭PETRAS应用程序 |
|
5.5.9 添加自定义属性以便合并应用程序能找到所有的Time-Entry工作簿进程 |
|
5.5.10 应用程序的组织 |
|
第6章 独立式应用程序 |
|
6.1 独立式应用程序的结构 |
|
6.1.1 启动与关闭 |
|
6.1.2 自定义用户界面 |
|
6.1.3 处理与分析 |
|
6.1.4 显示结果 |
|
6.2 实例分析 |
|
6.2.1 PETRASTimesheet |
|
6.2.2 PETRAS报表 |
|
第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 PETRASTimesheet |
|
7.5.2 PETRAS报表 |
|
第8章 命令栏高级应用 |
|
8.1 命令栏的设计 |
|
8.2 表驱动命令栏 |
|
8.2.1 表驱动命令栏构建器简介 |
|
8.2.2 命令栏定义表 |
|
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 PETRASTimesheet |
|
8.6.2 PETRAS报表 |
|
第9章 理解和使用WindowsAPI |
|
9.1 概述 |
|
9.1.1 查找文档 |
|
9.1.2 查找声明 |
|
9.1.3 查找常量的值 |
|
9.1.4 理解句柄 |
|
9.1.5 封装API调用 |
|
9.2 与屏幕相关的操作 |
|
9.2.1 读取屏幕分辨率 |
|
9.2.2 查看像素的尺寸 |
|
9.3 与窗口相关的操作 |
|
9.3.1 窗口类 |
|
9.3.2 获取窗口 |
|
9.3.3 查找相关的窗口 |
|
9.3.4 窗口消息 |
|
9.3.5 更改窗口的图标 |
|
9.3.6 改变窗体样式 |
|
9.4 与键盘相关的操作 |
|
9.4.1 检验Shift键、Ctrl键、Alt键、Caps Lock键、NumLock键和 |
|
Scroll Lock键的状态 |
|
9.4.2 检测某个键是否被按下 |
|
9.5 与文件系统和网络相关的操作 |
|
9.5.1 查找用户ID |
|
9.5.2 改变至UNC路径 |
|
9.5.3 查找指定的文件夹 |
|
9.5.4 将文件删除到回收站中 |
|
9.5.5 浏览文件夹 |
|
9.6 实例分析 |
|
9.6.1 PETRASTimesheet |
|
9.6.2 PETRAS报表 |
|
第10章 用户窗体设计与最佳实践 |
|
10.1 基本原则 |
|
10.1.1 简单化 |
|
10.1.2 显示界面,191而非业务规则 |
|
10.1.3 使用类,192而非默认的实例 |
|
10.1.4 提供属性和方法,193而非控件 |
|
10.2 控件基础 |
|
10.2.1 命名 |
|
10.2.2 分层 |
|
10.2.3 位置 |
|
10.2.4 Tab次序和加速键 |
|
10.2.5 数据绑定 |
|
10.2.6 事件处理 |
|
10.2.7 检验 |
|
10.3 可视效果 |
|
10.3.1 用户窗体的窗口样式 |
|
10.3.2 使关闭按钮不可用 |
|
10.3.3 在用户窗体上显示图形、图表和艺术字等 |
|
10.3.4 锁定与禁用控件 |
|
10.3.5 弹出式菜单 |
|
10.4 用户窗体的位置和尺寸 |
|
10.4.1 靠近单元格的布置 |
|
10.4.2 响应不同的分辨率 |
|
10.4.3 可调整尺寸的用户窗体 |
|
10.4.4 分隔栏 |
|
10.5 向导 |
|
10.5.1 向导对话框的设计规则 |
|
10.5.2 创建一个向导对话框 |
|
10.6 动态窗体 |
|
10.6.1 用户窗体中的控件子集 |
|
10.6.2 代码创建和表驱动的窗体 |
|
10.6.3 滚动区域 |
|
10.6.4 动态控件事件处理和控件数组 |
|
10.7 非模态用户窗体 |
|
10.7.1 闪现屏幕 |
|
10.7.2 进度条 |
|
10.7.3 与菜单项组合在一起 |
|
10.8 特殊控件 |
|
10.8 1组合框 |
|
10.8.2 Windows通用控件 |
|
10.9 实例分析 |
|
10.9.1 PETRASTimesheet |
|
0.9.2 PETRAS报表 |
|
第11章 接口 |
|
11.1 什么是接口 |
|
11.2 代码重用 |
|
11.3 定义自定义接口 |
|
11.4 自定义接口的实现 |
|
11.5 自定义接口的使用 |
|
11.6 多态类 |
|
11.7 提高健壮性 |
|
11.8 简化开发 |
|
11.8.1 进度条 |
|
11.9 插入式结构 |
|
11.10 实例分析 |
|
11.10.1 PETRASTimesheet |
|
11.10.2 PETRAS报表 |
|
第12章 VBA错误处理.. |
|
12.1 错误处理的概念 |
|
12.1.1 未处理错误与已处理错误的比较 |
|
12.1.2 Err对象 |
|
12.1.3 何为错误处理器 |
|
12.1.4 错误处理器的作用域 |
|
12.1.5 OnError语句 |
|
12.1.6 Resume语句 |
|
12.1.7 产生自定义错误 |
|
12.2 单个退出点原则 |
|
12.3 简单错误处理 |
|
12.4 复杂错误处理器的结构 |
|
12.4.1 过程错误处理器 |
|
12.4.2 不重要过程 |
|
12.5 中央错误处理器 |
|
12.6 类和用户窗体中的错误处理 |
|
12.6.1 Initialize和Activate事件 |
|
12.6.2 Terminate事件 |
|
12.7 把它们结合在一起 |
|
12.8 实例分析 |
|
12.8.1 PETRASTimesheet |
|
12.8.2 PETRAS报表应用程序 |
|
第13章 数据库编程 |
|
13.1 数据库简介 |
|
13.1.1 为什么使用数据库 |
|
13.1.2 关系数据库 |
|
13.1.3 基于文件的数据库和客户机-服务器数据库 |
|
13.1.4 规范化 |
|
13.1.5 什么时候不必规范化 |
|
13.1.6 关系与参照完整性 |
|
13.1.7 固有的主关键字和人为的主关键字 |
|
13.2 设计数据访问层 |
|
13.3 用SQL和ADO进行数据存取 |
|
13.3.1 ActiveXData |
|
13.3.2 ADO对象 |
|
13.3.3 连接数据源 |
|
13.3.4 数据存取技术 |
|
13.4 进一步学习 |
|
13.5 实例分析 |
|
13.5.1 PETRASTimesheet |
|
13.5.2 PETRAS报表 |
|
第14章 数据处理技术 |
|
14.1 Excel的数据结构 |
|
14.1.1 非结构化区域 |
|
14.1.2 结构化区域 |
|
14.1.3 Excel2003的列表 |
|
14.1.4 查询表 |
|
14.2 数据处理功能 |
|
14.2.1 处理的不仅仅是数据 |
|
14.2.2 数据透视表缓存 |
|
14.2.3 数据透视表 |
|
14.2.4 数据合并 |
|
14.2.5 高级筛选 |
|
14.3 高级函数 |
|
14.3.1 数据库函数 |
|
14.3.2 数组公式 |
|
14.3.3 循环引用 |
|
第15章 高级图表技术 |
|
15.1 基本技术 |
|
15.1.1 组合图表类型 |
|
15.1.2 使用多个坐标轴 |
|
15.1.3 使用预定义名称来建立图表与数据的连接 |
|
15.1.4 伪造它 |
|
15.2 VBA技术 |
|
15.2.1 在图表坐标系之间进行转换 |
|
15.2.2 定位图表对象 |
|
15.2.3 计算合理的坐标比例 |
|
第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 信息 |
|
第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 |
|
第18章 控制其他Office应用程序 |
|
18.1 基本原理(相关知识) |
|
18.1.1 自动化 |
|
18.1.2 引用 |
|
18.1.3 开发中的技巧 |
|
18.1.4 vTable表.前期绑定和后期绑定 |
|
18.1.5 处理应用程序实例 |
|
18.1.6 性能分析 |
|
18.2 主要Office程序的对象模型 |
|
18.2.1 Aess和数据存取对象 |
|
18.2.2 Word应用程序 |
|
8.2.3 PowerPoint和MSGraph |
|
18.2.4 Outlook |
|
18.2.5 进一步学习 |
|
18.3 实例分析 |
|
第19章 XLL和CAPI函数 |
|
19.1 为什么需要创建基于XLL的工作表函数 |
|
19.2 在Visual Studio中创建XLL工程 |
|
19.3 XLL的结构 |
|
19.3.1 函数表 |
|
19.3.2 DLLMain函数 |
|
19.3.3 标准XLL回调函数 |
|
19.3.4 其他的XLL回调函数 |
|
19.4 XLOPER和OPER数据类型 |
|
19.5 Excel4函数 |
|
19.6 常用的CAPI函数 |
|
19.6.1 xlFree |
|
19.6.2 xlCoerce |
|
19.6.3 xlGetName |
|
19.7 XLOPER变量和内存管理 |
|
19.8 自定义工作表函数的注册和取消 |
|
19.9 函数应用举例 |
|
19.1 工作表函数的调试 |
|
19.11 其他相关事项 |
|
19.11.1 COM自动化用户应该注意的事项 |
|
19.11.2 C++关键字与XLOPER定义的冲突 |
|
19.12 其他资源 |
|
19.12.1 MSDN中的Excel 97 SDK |
|
19.12.2 用C/C++开发Excel加载宏:在金融领域的应用 |
|
19.12.3 WilliamHooper的网站 |
|
19.12.4 LaurentLongre的网站(法语网站) |
|
19.12.5 微软的Excel公共新闻组 |
|
19.12.6 PlanatechXLL+ |
|
19.12.7 KeithLewis的资源软件“Object-Oriented |
|
19.12.8 ManagedXLL |
|
9.13 本章小结 |
|
第20章 Excel和VisualBasi |
|
20.1 创建一个Hello World的A tiveX DLL |
|
20.1.1 创建一个A tiveX DLL工程 |
|
20.1.2 最简单的单向通信程序 |
|
20.1.3 更复杂一些的双向通信程序 |
|
20.1.4 在Excel显示VB6窗体 |
|
20.2 为什么要在ExcelVBA工程中使用VB6 A tiveX |
|
20.2.1 代码保护功能 |
|
20.2.2 利用VB6窗体 |
|
20.2.3 更好地支持面向对象程序设计 |
|
20.2.4 资源文件 |
|
20.2.5 其他的VB6特性 |
|
20.3 进程内通信与进程外通信 |
|
20.3.1 进程内通信 |
|
20.3.2 进程外通信 |
|
20.4 在VB6EXE程序中以自动化方式使用Excel |
|
20.4.1 以自动化方式使用Excel的简单程序 |
|
20.4.2 使用VB6EXE作为Excel应用程序的加载器 |
|
20.5 实例分析 |
|
20.5.1 在AtiveX |
|
20.5.2 使用标准EXE程序作为Excel应用程序的加载器 |
|
第21章 使用VisualBasi |
|
21.1 HelloWorld加载宏 |
|
21.2 宏设计器 |
|
21.2.1 General页 |
|
21.2.2 Advanced页 |
|
21.3 COM加载项的安装 |
|
21.4 AddinInstance对象中的事件 |
|
21.4.1 Initialize |
|
21.4.2 OnConnection |
|
21.4.3 OnStartupComplete |
|
21.4.4 OnAddInsUpdate |
|
21.4.5 OnBeginShutdown |
|
21.4.6 OnDisconnection |
|
21.4.7 Terminate |
|
21.5 命令栏的处理 |
|
21.5.1 使用命令栏事件挂钩 |
|
21.5.2 永久菜单项和临时菜单项 |
|
21.5.3 永久菜单结构 |
|
21.5.4 临时菜单结构 |
|
21.5.5 自定义工具栏的界面 |
|
21.5.6 选择性粘贴栏的COM加载项 |
|
21.6 为什么要使用COM加载项 |
|
21.6.1 进一步提高了代码的安全性 |
|
21.6.2 能与多个应用程序通信的COM加载项 |
|
21.6.3 使用独立的线程 |
|
21.7 自动化加载宏集合 |
|
21.7.1 创建IfError的自动化宏 |
|
21.7.2 使用IfError自动化宏 |
|
21.7.3 在自动化加载宏中访问Excel应用程序对象 |
|
21.8 实例分析 |
|
第22章 使用VB.NET和VisualStudio的Office工具 |
|
22.1 概述 |
|
22.1.1 目标用户 |
|
22.1.2 VSTO是什么 |
|
22.1.3 NET是如何与Office交互工作的 |
|
22.1.4 VBA过时了吗 |
|
22.1.5 相关术语 |
|
22.2 如何发挥.NET框架的杠杆作用 |
|
22.3 托管工作簿 |
|
22.3.1 相关概念 |
|
22.3.2 HelloWorld的托管工作簿 |
|
22.3.3 默认的VSTO模板 |
|
22.3.4 ProExcelVSTO模板 |
|
22.3.5 共享命令栏 |
|
22.4 托管的Excel加载宏集合 |
|
22.4.1 选择性粘贴栏的VSTO加载宏 |
|
22.5 VBA/VSTO的混合解决方案 |
|
22.6 VSTO安全模型 |
|
22.6.1 强名机制 |
|
22.6.2 强名中存在的风险 |
|
22.6.3 创建和使用强名 |
|
22.6.4 对强名的信任 |
|
22.6.5 Caspol |
|
22.7 一些值得注意的问题 |
|
22.7.1 功能上的不足 |
|
22.7.2 应用程序的连接 |
|
22.7.3 区域性问题 |
|
22.7.4 安全性和共享托管的工作簿 |
|
22.7.5 对VBA进行移植 |
|
2.7.6 Office的版本 |
|
22.8 进一步学习的资料 |
|
22.9 实例分析 |
|
22.9.1 PETRASTimesheet加载宏 |
|
22.9.2 PETRAS报表应用程序 |
|
第23章 Excel.XML和Web服务 |
|
23.1 XML |
|
23.1.1 XML文件示例 |
|
23.1.2 XSD文件示例 |
|
23.1.3 Excel2003的XML特性概述 |
|
23.1.4 一个简单的金融模型 |
|
23.1.5 创建XML方案定义文件 |
|
23.1.6 XML映射 |
|
23.1.7 导出和导入XML数据 |
|
23.1.8 XML对象模型和事件 |
|
23.1.9 早期版本中的XML支持 |
|
23.1.10 使用命名空间 |
|
23.2 Web服务 |
|
23.2 1用VB.NET创建Web服务 |
|
23.2.2 使用Web服务 |
|
23.3 实例分析 |
|
23.3.1 PETRASWeb服务 |
|
23.3.2 PETRASTimesheet |
|
23.3.3 PETRAS报表应用程序 |
|
第24章 帮助、安全、打包和发布 |
|
24.1 为应用程序提供帮助 |
|
24.1.1 概述 |
|
24.1.2 开始设计帮助文件 |
|
24.1.3 编写帮助内容 |
|
24.1.4 在VBA中显示帮助 |
|
24.2 安全 |
|
24.2.1 Excel的安全性 |
|
24.2.2 检查网络分组 |
|
24.2.3 宏安全性和数字签名 |
|
24.2.4 数字签名的替代方法 |
|
24.3 打包 |
|
24.3.1 安装位置 |
|
24.3.2 安装要求 |
|
24.3.3 安装方式 |
|
24.4 发布 |
|
24.4.1 初始版本 |
|
24.4.2 升级 |
|
24.4.3 主页号码(PhoneHome) |