当前位置:首页 > 工业技术
Excel 2003高级VBA编程宝典
Excel 2003高级VBA编程宝典

Excel 2003高级VBA编程宝典PDF电子书下载

工业技术

  • 电子书积分:19 积分如何计算积分?
  • 作 者:(美)John Walkenbach著;盖江南,王勇等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121017857
  • 页数:696 页
图书介绍:本书主要介绍如何管理运算符、错误值、命名技术及绝对和相对引用,使用审核工具调试公式中的错误;导入和导出XML文件,将数据映射到单元格;使用Excel 2003的权限管理功能;处理数组公式;开发自定义公式产生所需的结果。本书由美国知名电子表格专家John Walkenbach撰写,在著名的亚马逊网站赢得了五星级评价。
《Excel 2003高级VBA编程宝典》目录
标签:宝典 编程

第1部分 Excel基础知识 1

第1章 Excel 2003的起源 2

1.1 电子表格软件的简短历史 2

1.1.1 最初的起源VisiCalc 2

1.1.2 Lotus 1-2-3 2

1.1.3 Quattro Pro 5

1.1.4 Microsoft Excel 5

1.2 Excel对开发人员的重要性 9

1.3 Excel在微软战略中的角色 9

第2章 Excel概述 11

2.1 关于对象 11

2.2 工作簿 12

2.2.1 工作表 12

2.2.2 图表工作表 13

2.2.3 XLM宏工作表 13

2.2.4 Excel 5/95对话框编辑表 14

2.3 Excel的用户界面 14

2.3.1 菜单 14

2.3.2 快捷菜单 15

2.3.3 工具栏 15

2.3.4 对话框 16

2.3.5 拖放 16

2.3.6 键盘快捷键 17

2.3.7 智能标记 17

2.3.8 任务窗格 17

2.4 数据录入 18

2.5 公式、函数和名称 19

2.6 定制屏幕显示 20

2.7 选择对象 20

2.8 格式 21

2.8.1 数字型格式 21

2.8.2 样式型格式 21

2.9 形状 22

2.10 图表 22

2.11 宏和编程 23

2.12 数据库访问 23

2.12.1 工作表数据库 24

2.12.2 外部数据库 24

2.13 Internet特性 25

2.14 XML特性 26

2.15 分析工具 26

2.15.1 分级显示 26

2.15.2 自动的分类汇总 26

2.15.3 Analysis ToolPak 26

2.15.4 数据透视表 27

2.15.5 Solver 28

2.16 加载宏 28

2.17 兼容性 28

2.18 保护选项 28

2.18.1 保护公式以防被修改 28

2.18.2 保护工作簿的结构 29

2.18.3 用密码保护工作簿 30

2.18.4 用密码保护VBA代码 30

2.19 Excel的“帮助”系统 31

第3章 公式的技巧 32

3.1 公式简介 32

3.2 计算公式 32

3.3 单元格和单元格区域引用 33

3.3.1 为什么使用不是相对的引用 33

3.3.2 R1C1表示法 34

3.3.3 引用其他的工作表或者工作簿 35

3.4 使用名称 36

3.4.1 命名单元格和单元格区域 36

3.4.2 将名称应用于现有的引用 36

3.4.3 交叉名称 37

3.4.4 命名列和行 38

3.4.5 名称的作用域 38

3.4.6 命名常量 38

3.4.7 命名公式 39

3.4.8 命名对象 40

3.5 公式错误 41

3.6 数组公式 41

3.6.1 一个数组公式的例子 42

3.6.2 数组公式日历 43

3.6.3 数组公式的优缺点 43

3.7 计数和求和技巧 43

3.7.1 使用COUNTIF或者SUMIF函数 44

3.7.2 使用数组公式进行计数和求和 44

3.7.3 其他计数工具 45

3.8 使用日期和时间 46

3.8.1 输入日期和时间 46

3.8.2 使用1900年之前的日期 46

3.9 创建大公式 47

第4章 理解Excel的文件 50

4.1 启动Excel 50

4.2 所支持的电子表格文件格式 51

4.2.1 Lotus 1-2-3电子表格文件 52

4.2.2 Quattro Pro电子表格文件 52

4.2.3 数据库文件格式 52

4.2.4 文本文件格式 53

4.2.5 其他文件格式 53

4.3 用Excel编写的文件 53

4.3.1 XLS文件 54

4.3.2 工作区文件 54

4.3.3 模板文件 55

4.3.4 工具栏文件 55

4.3.5 加载宏文件 56

4.4 Excel和HTML 56

4.4.1 Excel如何使用HTML 56

4.4.2 增加难度 57

4.4.3 创建交互式的HTML文件 58

4.5 导入和导出XML文件 59

4.5.1 什么是XML 59

4.5.2 使用映射导入XML数据 60

4.5.3 将XML数据导入到列表中 62

4.5.4 从Excel导出XML数据 63

4.6 注册表中的Excel设置 63

4.6.1 关于注册表 63

4.6.2 Excel的设置 64

第2部分 Excel应用程序开发 67

第5章 电子表格应用程序的内涵 68

5.1 电子表格应用程序 68

5.2 开发人员和终端用户 69

5.2.1 谁是开发人员 69

5.2.2 电子表格应用程序用户的分类 70

5.2.3 电子表格应用程序的客户 70

5.3 用电子表格应用程序解决问题 71

5.4 基本的电子表格应用程序类型 71

5.4.1 快捷但质量不高的电子表格应用程序 72

5.4.2 自己创作、自己使用的电子表格应用程序 72

5.4.3 单用户电子表格应用程序 72

5.4.4 意大利面条式电子表格应用程序 73

5.4.5 实用电子表格应用程序 73

5.4.6 包含工作表函数的加载宏 74

5.4.7 单元块预算式电子表格应用程序 74

5.4.8 假设分析模型式电子表格应用程序 74

5.4.9 数据存储和访问电子表格应用程序 74

5.4.10 数据库前端电子表格应用程序 75

5.4.11 统包式电子表格应用程序 75

第6章 电子表格应用程序开发的基础 76

6.1 确定用户需求 76

6.2 规划满足用户需求的应用程序 77

6.3 确定最合适的用户界面 78

6.3.1 创建自定义的对话框 79

6.3.2 在工作表上使用ActiveX控件 79

6.3.3 自定义菜单 80

6.3.4 自定义工具栏 82

6.3.5 创建快捷键 83

6.3.6 执行开发的成果 83

6.4 使自己关心终端用户 84

6.4.1 测试电子表格应用程序 84

6.4.2 尽量完善电子表格应用程序的安全性 85

6.4.3 使得电子表格应用程序比较美观和直观 86

6.4.4 创建用户帮助系统 87

6.4.5 编制有关开发成果的文档 87

6.4.6 将电子表格应用程序分发给用户 87

6.4.7 需要的时候更新电子表格应用程序 88

6.5 其他开发问题 88

6.5.1 用户安装的Excel版本 88

6.5.2 语言问题 89

6.5.3 系统速度 89

6.5.4 视频模式 89

第3部分 理解VBA 91

第7章 VBA概述 92

7.1 基本的背景 92

7.2 关于VBA 92

7.2.1 对象模型 93

7.2.2 VBA与XLM的对比 93

7.3 VBA基础知识 94

7.4 Visual Basic编辑器概述 96

7.4.1 激活VBE 96

7.4.2 VBE窗口 97

7.5 使用“工程资源浏览器”窗口 98

7.5.1 添加新的VBA模块 99

7.5.2 删除VBA模块 99

7.5.3 导出和导入对象 99

7.6 使用“代码”窗口 100

7.6.1 最小化和最大化窗口 100

7.6.2 存储VBA代码 101

7.6.3 输入VBA代码 101

7.7 定制VBE环境 106

7.7.1 使用“编辑器”选项卡 106

7.7.2 使用“编辑器格式”选项卡 108

7.7.3 使用“通用”选项卡 109

7.7.4 使用“可连接的”选项卡 110

7.8 宏录制器 111

7.8.1 宏录制器实际记录哪些内容 111

7.8.2 相对模式还是绝对模式 112

7.8.3 录制选项 115

7.8.4 整理已录制的宏 115

7.9 关于对象和集合 117

7.9.1 对象层次结构 117

7.9.2 关于集合 118

7.9.3 引用对象 118

7.10 属性和方法 119

7.10.1 对象的属性 119

7.10.2 对象的方法 119

7.11 Comment对象示例 121

7.11.1 查看有关Comment对象的帮助 121

7.11.2 Comment对象的属性 122

7.11.3 Comment对象的方法 122

7.11.4 Comments集合 123

7.11.5 关于Comment属性 123

7.11.6 Comment对象中的对象 124

7.11.7 确定单元格中是否含有Comment对象 125

7.11.8 添加新的Comment对象 125

7.11.9 一些有用的应用程序属性 126

7.12 Range对象的使用 127

7.12.1 Range属性 128

7.12.2 Cells属性 129

7.12.3 Offset属性 130

7.13 关于对象 131

7.13.1 基本的理念 131

7.13.2 学习有关对象和属性的更多信息 132

第8章 VBA编程基础 135

8.1 VBA语言元素概览 135

8.2 注释 137

8.3 变量、数据类型和常量 138

8.3.1 定义数据类型 139

8.3.2 声明变量 141

8.3.3 变量的作用域 142

8.3.4 常量的使用 145

8.3.5 字符串的使用 146

8.3.6 日期的使用 147

8.4 赋值语句 148

8.5 数组 149

8.5.1 声明数组 149

8.5.2 声明多维数组 149

8.6 对象变量 150

8.7 用户定义数据类型 151

8.8 内置函数 152

8.9 处理对象和集合 154

8.9.1 With-End With构造 154

8.9.2 For Each-Next构造 155

8.10 控制执行 156

8.10.1 GoTo语句 157

8.10.2 If-Then构造 157

8.10.3 Select Case构造 160

8.10.4 指令的循环块 163

第9章 VBA的Sub过程 169

9.1 关于过程 169

9.1.1 声明Sub过程 169

9.1.2 过程的作用域 170

9.2 执行Sub过程 171

9.2.1 用“运行子过程/用户窗体”命令执行过程 172

9.2.2 从“宏”对话框执行过程 172

9.2.3 用Ctrl键组合执行过程 172

9.2.4 从自定义菜单执行过程 173

9.2.5 从另一个过程执行过程 175

9.2.6 从工具栏按钮执行过程 178

9.2.7 通过单击对象执行过程 179

9.2.8 当事件发生时执行过程 180

9.2.9 从“立即窗口”执行过程 180

9.3 向过程传递参数 181

9.4 错误处理技术 184

9.4.1 捕获错误 184

9.4.2 错误处理示例 185

9.5 使用Sub过程的实际例子 187

9.5.1 目的 187

9.5.2 工程需求 188

9.5.3 已经了解的信息 188

9.5.4 着手处理 188

9.5.5 需要了解哪些信息 189

9.5.6 初步的录制工作 189

9.5.7 初始设置 190

9.5.8 代码的编写 191

9.5.9 排序过程的编写 192

9.5.10 更多测试 195

9.5.11 修复问题 195

9.5.12 实用程序的可用性 197

9.5.13 对工程进行评估 197

第10章 创建Function过程 199

10.1 Sub过程与Function过程对比 199

10.2 为什么创建自定义的函数 199

10.3 介绍性的函数示例 200

10.3.1 一个自定义函数 200

10.3.2 在工作表中使用函数 200

10.3.3 在VBA过程中使用函数 201

10.3.4 分析自定义函数 202

10.4 Function过程 202

10.4.1 声明函数 203

10.4.2 函数的作用域 203

10.4.3 执行Function过程 204

10.5 Function过程的参数 205

10.6 函数示例 206

10.6.1 无参数的函数 206

10.6.2 另一个无参数的函数 206

10.6.3 接受一个参数的函数 207

10.6.4 接受两个参数的函数 209

10.6.5 接受数组参数的函数 210

10.6.6 接受可选参数的函数 211

10.6.7 返回VBA数组的函数 212

10.6.8 返回错误值的函数 214

10.6.9 接受不定数量的参数的函数 215

10.7 模拟Excel的SUM函数 216

10.8 调试函数 218

10.9 使用“插入函数”对话框 219

10.9.1 指定函数类别 220

10.9.2 添加函数说明 220

10.10 使用加载宏存储自定义的函数 222

10.11 使用Windows API 222

10.11.1 Windows API示例 223

10.11.2 确定Windows目录 223

10.11.3 检测Shift键 224

10.11.4 了解更多有关API函数的信息 225

第11章 VBA编程示例和技巧 226

11.1 处理单元格区域 226

11.1.1 复制单元格区域 226

11.1.2 移动单元格区域 227

11.1.3 复制大小可变的单元格区域 228

11.1.4 选中或者识别各种类型的单元格区域 229

11.1.5 提示输入单元格中的值 230

11.1.6 在下一个空单元格内输入一个值 231

11.1.7 暂停宏的运行以便获得用户选中的单元格区域 232

11.1.8 计算选中的单元格的数目 234

11.1.9 确定选中的单元格区域的类型 234

11.1.10 有效地遍历选中的单元格区域 235

11.1.11 删除所有空行 237

11.1.12 确定单元格区域是否包含在另一个单元格区域内 238

11.1.13 确定单元格的数据类型 238

11.1.14 读写单元格区域 239

11.1.15 给单元格区域写值的更好的方法 240

11.1.16 传递一维数组中的内容 242

11.1.17 将单元格区域传递给Variant类型的数组 242

11.1.18 选中单元格区域中的最大值 243

11.1.19 选中有某种特殊格式的所有单元格 244

11.2 处理工作簿和工作表 245

11.2.1 保存所有工作簿 246

11.2.2 保存和关闭所有工作簿 246

11.2.3 访问工作簿的属性 246

11.2.4 同步工作表 247

11.3 VBA技巧 248

11.3.1 切换布尔类型的属性值 248

11.3.2 确定打印的页面的数量 249

11.3.3 显示日期和时间 249

11.3.4 获得字体列表 250

11.3.5 排序数组 251

11.3.6 处理一系列文件 252

11.4 用在代码中的一些有用的函数 254

11.4.1 FileExists函数 254

11.4.2 FileNameOnly函数 254

11.4.3 PathExists函数 255

11.4.4 RangeNameExists函数 255

11.4.5 SheetExists函数 255

11.4.6 WorkbookIsOpen函数 255

11.4.7 检索已经关闭的工作簿中的值 256

11.5 一些有用的工作表函数 257

11.5.1 返回单元格的格式信息 258

11.5.2 显示与保存和打印的文件有关的数据 259

11.5.3 理解对象的父亲 259

11.5.4 计算值介于两个值之间的单元格数目 260

11.5.5 计算单元格区域中可见单元格的数目 261

11.5.6 确定行或者列中最后一个非空的单元格 261

11.5.7 字符串与模式匹配 263

11.5.8 从字符串中提取第n个元素 264

11.5.9 多功能的函数 265

11.5.10 SHEETOFFSET函数 266

11.5.11 返回所有工作表中数据的最大值 266

11.5.12 返回没有重复的随机整数元素的数组 267

11.5.13 随机化单元格区域 269

11.6 Windows API调用 270

11.6.1 确定文件的关联性 270

11.6.2 确定默认打印机的信息 271

11.6.3 确定当前的视频模式 272

11.6.4 给应用程序添加声音 273

11.6.5 读写注册表 274

第4部分 用户窗体 277

第12章 多种自定义对话框的方法 278

12.1 创建用户窗体之前需要了解的内容 278

12.2 使用输入框 278

12.2.1 VBA的InputBox函数 278

12.2.2 Excel的InputBox函数 280

12.3 VBA的MsgBox函数 281

12.4 Excel的GetOpenFilename方法 284

12.5 Excel的GetSaveAsFilename方法 287

12.6 提示输入目录名称 287

12.6.1 使用Windows API函数选中目录 288

12.6.2 使用FileDialog对象选中目录 290

12.7 显示Excel的内置对话框 290

12.7.1 使用Dialogs集合 290

12.7.2 了解更多与内置对话框有关的信息 292

12.7.3 用内置对话框时使用参数 292

12.7.4 直接执行菜单项 293

第13章 用户窗体概述 294

13.1 Excel如何处理自定义对话框 294

13.2 插入新的用户窗体 294

13.3 往用户窗体上添加控件 295

13.4 “工具箱”的控件 296

13.4.1 复选框 296

13.4.2 组合框 296

13.4.3 命令按钮 296

13.4.4 框架 296

13.4.5 图像 296

13.4.6 标签 297

13.4.7 列表框 297

13.4.8 多页 297

13.4.9 选项按钮 297

13.4.10 RefEdit 297

13.4.11 滚动条 297

13.4.12 数值调节钮 297

13.4.13 TabStrip 298

13.4.14 文本框 298

13.4.15 切换按钮 298

13.5 调整用户窗体的控件 299

13.6 调整控件的属性 300

13.6.1 使用“属性”窗口 300

13.6.2 共同属性 301

13.6.3 更多属性的信息 301

13.6.4 适应键盘用户的需求 301

13.7 显示和关闭用户窗体 303

13.7.1 显示用户窗体 303

13.7.2 关闭用户窗体 304

13.7.3 关于事件处理程序 305

13.8 创建用户窗体示例 306

13.8.1 创建用户窗体 306

13.8.2 编写代码显示对话框 308

13.8.3 测试对话框 308

13.8.4 添加事件处理程序 309

13.8.5 验证数据的有效性 310

13.8.6 完成的对话框作品 311

13.9 理解用户窗体的事件 311

13.9.1 了解事件 311

13.9.2 用户窗体的事件 312

13.9.3 数值调节钮的事件 312

13.9.4 数值调节钮与文本框配对 314

13.10 引用用户窗体的控件 316

13.11 自定义“工具箱” 317

13.11.1 更改图标或者提示文本 317

13.11.2 添加新页 317

13.11.3 自定义或者组合控件 317

13.11.4 添加新的ActiveX控件 318

13.12 创建用户窗体的模板 318

13.13 用户窗体检验表 319

第14章 用户窗体示例 320

14.1 创建用户窗体式菜单 320

14.1.1 在用户窗体中使用命令按钮 320

14.1.2 在用户窗体中使用列表框 321

14.2 从用户窗体选中单元格区域 322

14.3 创建欢迎界面 323

14.4 禁用用户窗体的关闭按钮 324

14.5 改变用户窗体的大小 325

14.6 从用户窗体缩放和滚动工作表 326

14.7 列表框技巧 328

14.7.1 关于列表框控件 328

14.7.2 向列表框控件添加条目 329

14.7.3 确定选中的条目 332

14.7.4 确定选中的列表框中的多个条目 332

14.7.5 单个列表框中的多个列表 333

14.7.6 列表框条目的转移 334

14.7.7 在列表框中移动条目 335

14.7.8 使用多列的列表框控件 336

14.7.9 使用列表框选中工作表中的行 338

14.7.10 使用列表框激活工作表 339

14.8 在用户窗体中使用多页控件 341

第15章 用户窗体的高级技巧 343

15.1 显示进度条 343

15.1.1 创建独立的进度条 344

15.1.2 使用多页控件显示进度条 346

15.1.3 不用多页控件显示进度条 347

15.2 创建向导 348

15.2.1 为向导设置多页控件 348

15.2.2 向向导用户窗体添加按钮 349

15.2.3 编写向导按钮的程序 349

15.2.4 编写向导中的相关性代码 351

15.2.5 用向导执行任务 352

15.3 模仿MsgBox函数 353

15.3.1 MyMsgBox代码 354

15.3.2 如何模仿MsgBox 355

15.3.3 在模仿MsgBox函数的过程中使用MyMsgBox函数 356

15.4 非模态用户窗体 356

15.5 用一个事件处理程序处理多个用户窗体按钮 358

15.6 在用户窗体中选择颜色 360

15.7 在用户窗体中显示图表 362

15.7.1 将图表保存为文件 362

15.7.2 使用OWC的ChartSpace控件 363

15.8 在用户窗体中显示电子表格 366

15.8.1 使得Spreadsheet控件可用 366

15.8.2 把Spreadsheet控件添加到用户窗体中 366

15.8.3 使用OWC Spreadsheet控件的简单示例 366

15.9 复杂的用户窗体Enhanced Data Form 368

15.9.1 关于Enhanced DataForm 369

15.9.2 安装Enhanced Data Form加载宏 370

15.9.3 使用Enhanced Data Form 370

第5部分 高级编程技巧 371

第16章 用VBA开发Excel实用程序 372

16.1 关于Excel实用程序 372

16.2 使用VBA开发实用程序 373

16.3 如何造就好的实用程序 373

16.4 Text Tools剖析实用程序 373

16.4.1 Text Tools的背景 374

16.4.2 Text Tools的工程目标 374

16.4.3 Text Tools实用程序的运作机理 375

16.4.4 Text Tools工作簿 375

16.4.5 Text Tools实用程序的用户窗体 375

16.4.6 ThisWorkbook代码模块 376

16.4.7 Module1 VBA模块 378

16.4.8 UserForm1代码模块 379

16.4.9 使得Text Tools实用程序更加有效率 380

16.4.10 保存Text Tools实用程序的设置 381

16.4.11 实现撤销操作 382

16.4.12 事后分析工程 383

16.4.13 理解Text Tools实用程序 384

16.5 了解有关Excel实用程序的更多内容 384

第17章 数据透视表 386

17.1 介绍性数据透视表示例 386

17.1.1 创建数据透视表 386

17.1.2 检查录制的数据透视表代码 388

17.1.3 整理录制的数据透视表代码 388

17.2 创建更加复杂的数据透视表 389

17.2.1 为更加复杂的数据透视表准备的数据 389

17.2.2 生成数据透视表的代码 390

17.2.3 更复杂的数据透视表的运作机理 392

17.3 从外部数据库创建数据透视表 392

17.4 创建多个数据透视表 394

17.5 修改数据透视表 396

第18章 图表 398

18.1 关于图表 398

18.1.1 图表的位置 398

18.1.2 Chart对象模型 399

18.2 录制图表宏 400

18.2.1 图表生成宏录制器输出 400

18.2.2 整理图表生成的宏录制器输出 401

18.3 常用的VBA制图方法 402

18.3.1 使用VBA激活图表 402

18.3.2 使用VBA使得图表处于非活动状态 404

18.3.3 确定图表是否处于活动状态 404

18.3.4 从ChartObjects或者Charts集合中删除图表 405

18.3.5 使用VBA应用图表的格式 405

18.3.6 遍历所有图表 406

18.3.7 调整ChartObject对象的大小和对齐ChartObject对象 407

18.4 更多制图的示例 408

18.4.1 在SERIES公式中使用名称 408

18.4.2 使用VBA指定图表使用的数据 410

18.4.3 使用VBA确定图表中使用的单元格区域 412

18.4.4 使用VBA显示图表上的任意的数据标志 415

18.4.5 在用户窗体上显示图表 416

18.5 理解图表的事件 418

18.5.1 使用图表事件的示例 419

18.5.2 为嵌入图表启用事件 421

18.5.3 在嵌入图表上使用图表事件 423

18.6 VBA制图技巧 425

18.6.1 在整个页面上打印嵌入图表 425

18.6.2 创建静态图表 425

18.6.3 用MouseOver事件显示文本 426

18.6.4 动态图表 428

18.6.5 创建内摆线图表 429

18.6.6 创建时钟式图表 430

18.7 不使用宏的制图技巧 431

18.7.1 使用“自动筛选”特性控制数据系列 431

18.7.2 在图表工作表上存储多个图表 433

18.7.3 创建自我扩展式的图表 433

18.7.4 创建交互式的图表 438

第19章 理解Excel的事件 442

19.1 Excel可以监视的事件类型 442

19.2 应该了解的有关事件的信息 442

19.2.1 理解事件的顺序 443

19.2.2 在何处放置事件处理程序的过程 443

19.2.3 禁用事件 444

19.2.4 输入事件处理程序的代码 445

19.2.5 使用参数的事件处理程序的过程 446

19.3 工作簿级别的事件 447

19.3.1 Open事件 448

19.3.2 Activate事件 449

19.3.3 SheetActivate事件 449

19.3.4 NewSheet事件 449

19.3.5 BeforeSave事件 449

19.3.6 Deactivate事件 450

19.3.7 BeforePrint事件 450

19.3.8 BeforeClose事件 451

19.4 工作表级别的事件 452

19.4.1 Change事件 453

19.4.2 监视特定的单元格区域的内容是否发生变化 454

19.4.3 SelectionChange事件 456

19.4.4 BeforeRightClick事件 457

19.5 图表事件 457

19.6 应用程序事件 459

19.6.1 启用应用程序级别的事件 460

19.6.2 确定何时打开工作簿 460

19.6.3 监视应用程序级别的事件 461

19.7 用户窗体事件 462

19.8 没有与对象关联的事件 463

19.8.1 OnTime事件 463

19.8.2 OnKey事件 465

第20章 与其他应用程序交互 467

20.1 从Excel启动别的应用程序 467

20.1.1 使用VBA的Shell函数 467

20.1.2 使用Windows的ShellExecute API函数 469

20.2 用Excel激活别的应用程序 470

20.2.1 使用AppActivate 470

20.2.2 激活某个Microsoft Office应用程序 471

20.3 运行“控制面板”对话框 471

20.4 在Excel中使用自动化 472

20.4.1 使用Automation处理外部对象 473

20.4.2 早期绑定与后期绑定 473

20.4.3 后期绑定的简单示例 475

20.4.4 从Excel控制Word 476

20.4.5 从另一个应用程序控制Excel 479

20.5 通过Outlook发送私人的电子邮件 481

20.6 使用ADO 482

20.7 从Excel发送电子邮件附件 484

20.8 使用SendKeys 484

第21章 创建和使用加载宏 487

21.1 加载宏的概念 487

21.1.1 加载宏与标准工作簿的比较 487

21.1.2 创建加载宏的原因 488

21.2 理解Excel的加载宏管理器 489

21.3 创建加载宏 490

21.4 加载宏示例 491

21.4.1 为加载宏示例设置工作簿 491

21.4.2 为加载宏示例测试工作簿 491

21.4.3 为加载宏示例添加描述性信息 491

21.4.4 创建加载宏 492

21.4.5 安装加载宏 493

21.4.6 发布加载宏 494

21.4.7 修改加载宏 494

21.5 对比XLA文件和XLS文件 495

21.5.1 XLS和XLA文件大小和结构 495

21.5.2 XLA文件的VBA集合成员 495

21.5.3 XLS和XLA文件的可见性 496

21.5.4 XLS和XLA文件中的工作表和图表工作表 496

21.5.5 在加载宏中访问VBA过程 497

21.6 用VBA处理加载宏 499

21.6.1 理解AddIns集合 499

21.6.2 AddIns对象属性 500

21.6.3 AddIns对象事件 503

21.7 优化加载宏的性能 503

21.7.1 最大化加载宏中的代码执行速度 503

21.7.2 控制加载宏的文件大小 504

21.8 加载宏存在的特殊问题 505

21.8.1 确保安装了加载宏 505

21.8.2 从加载宏中引用其他的文件 506

21.8.3 为加载宏检测使用的Excel版本是否正确 506

第6部分 开发应用程序 507

第22章 创建自定义工具栏 508

22.1 关于命令栏 508

22.2 工具栏的处理 508

22.3 Excel如何处理工具栏 509

22.3.1 保存工具栏 509

22.3.2 当工具栏不能正常运行时 510

22.4 手动处理工具栏和按钮 510

22.4.1 关于命令栏自定义模式 510

22.4.2 发布自定义工具栏 513

22.5 处理CommandBars集合 515

22.5.1 命令栏类型 515

22.5.2 列出所有命令栏对象 515

22.5.3 创建命令栏 516

22.5.4 在VBA中引用命令栏 517

22.5.5 使用VBA删除命令栏 517

22.5.6 命令栏的属性 518

22.5.7 引用命令栏中的控件 522

22.5.8 列出命令栏中的控件 523

22.5.9 列出所有工具栏上的所有控件 523

22.5.10 给命令栏添加控件 525

22.5.11 从命令栏中删除控件 525

22.5.12 命令栏控件的属性 525

第23章 创建自定义菜单 534

23.1 关于Excel的菜单栏 534

23.2 使用Excel的菜单可以完成哪些任务 534

23.2.1 从专业术语角度理解Excel的菜单 535

23.2.2 删除Excel菜单元素 536

23.2.3 添加Excel菜单元素 536

23.2.4 更改Excel菜单元素 536

23.3 使用VBA自定义Excel菜单 537

23.3.1 列出Excel菜单信息 537

23.3.2 往菜单栏添加新的菜单 539

23.3.3 从菜单栏中删除菜单 541

23.3.4 往菜单添加菜单项 541

23.3.5 显示菜单项的快捷键 545

23.3.6 修复重新设置了的菜单 546

23.4 处理事件的菜单程序设计 547

23.4.1 自动添加和删除菜单 547

23.4.2 禁用或者隐藏菜单 548

23.4.3 处理选中的菜单项 549

23.5 创建自定义菜单的简便方法 551

23.6 创建“工作表菜单栏”的替代品 553

23.7 处理快捷菜单 555

23.7.1 往快捷菜单添加菜单项 556

23.7.2 从快捷菜单中删除菜单项 557

23.7.3 禁用快捷菜单项 557

23.7.4 禁用快捷菜单 557

23.7.5 重新设置快捷菜单 558

23.7.6 创建新的快捷菜单 558

第24章 为应用程序提供帮助文档 561

24.1 为应用程序提供帮助 561

24.2 使用Excel组件的帮助系统 563

24.2.1 为帮助系统使用单元格组件 563

24.2.2 为帮助系统使用文本框 563

24.2.3 使用工作表显示帮助文本 564

24.2.4 在用户窗体中显示帮助 565

24.2.5 使用“Office助手”显示帮助 567

24.3 在用户窗体中模拟“这是什么?”帮助 569

24.4 使用HTMLHelp系统 570

24.5 将帮助文件与应用程序关联起来 571

24.6 将帮助主题与某个VBA函数关联起来 572

24.7 显示HTMLHelp文件的其他方法 573

24.7.1 使用Help方法 573

24.7.2 从消息框中显示帮助 573

24.7.3 从输入框中显示帮助 574

第25章 开发面向用户的应用程序 575

25.1 什么是面向用户的应用程序 575

25.2 Loan Amortization Wizard 575

25.2.1 使用Loan Amortization Wizard应用程序 575

25.2.2 Loan Amortization Wizard的工作簿结构 577

25.2.3 Loan Amortization Wizard的运作原理 578

25.2.4 增强Loan Amortization Wizard的潜能 581

25.3 应用程序开发概念 582

第7部分 其他主题 583

第26章 兼容性问题 584

26.1 什么是兼容性 584

26.2 兼容性问题的种类 585

26.3 Excel支持的文件格式 585

26.4 避免使用新特性 586

26.5 能够在Mac机器上运行吗 587

26.6 创建国际通用的应用程序 588

26.6.1 多语种应用程序 589

26.6.2 VBA语言考虑事项 590

26.6.3 使用本地属性 590

26.6.4 识别系统设置 590

26.6.5 日期和时间设置 592

第27章 用VBA处理文件 593

27.1 执行常见的文件操作 593

27.1.1 使用VBA的有关文件的命令 593

27.1.2 使用FileSearch对象 595

27.1.3 使用FileSystemObject对象 597

27.1.4 定位包含特定文本的文件 599

27.2 处理文本文件 599

27.2.1 打开文本文件 600

27.2.2 读文本文件 601

27.2.3 写文本文件 601

27.2.4 获得文件编号 601

27.2.5 确定或者设置文件的位置 601

27.2.6 读写文本文件的语句 602

27.3 文本文件处理示例 602

27.3.1 将数据导入到文本文件中 602

27.3.2 将单元格区域导出到文本文件 603

27.3.3 将文本文件的内容导入到单元格区域中 604

27.3.4 记录Excel日志的用法 605

27.3.5 筛选文本文件 606

27.3.6 导入多于256列的数据 606

27.3.7 导出单元格区域到HTML格式的文件 608

27.3.8 导出单元格区域到XML格式的文件 610

第28章 处理VB组件 613

28.1 IDE概述 613

28.2 IDE对象模型 614

28.3 显示VBA工程中的所有组件 617

28.4 对模块进行更改 618

28.5 使用VBA来编写VBA代码 620

28.6 在设计时往用户窗体上添加控件 621

28.6.1 设计时与运行时对用户窗体处理的比较 622

28.6.2 在设计时添加100个命令按钮 623

28.7 通过编程创建用户窗体 624

28.7.1 简单的运行时用户窗体的示例 624

28.7.2 有用的动态用户窗体示例 626

第29章 理解类模块 631

29.1 什么是类模块 631

29.2 创建NumLock类 632

29.2.1 插入类模块 632

29.2.2 添加VBA代码到类模块中 632

29.2.3 使用NumLock类 635

29.3 更多有关类模块的信息 636

29.3.1 命名对象类 636

29.3.2 对对象的属性进行编程 636

29.3.3 对对象的方法进行编程 637

29.3.4 类模块事件 638

29.4 一个CSV文件类 638

29.4.1 CSVFileClass类模块的类模块级别的变量 638

29.4.2 CSVFileClass类模块的属性过程 639

29.4.3 CSVFileClass类模块的方法过程 639

29.4.4 使用CSVFileClass对象 641

第30章 有关Excel编程的常见问题 643

30.1 一般的Excel问题 643

30.1.1 为什么Excel有两种宏语言 643

30.1.2 需要发布工作簿给仍然使用Excel 4的某些人,有办法将动作录制到某个XLM宏中吗 643

30.1.3 在Excel 97以及更高的版本中还能运行为更早的Excel版本而编写的XLM宏吗 643

30.1.4 能够找到将Excel 4宏转换为VBA宏的第三方实用程序吗 643

30.1.5 能够从Excel 4.0 XLM宏调用VBA过程吗 643

30.1.6 能够自动将Lotus 1-2-3或者QuattroPro宏转换为VBA宏吗 644

30.1.7 在哪里可以找到VBA代码的示例 644

30.1.8 有将Excel应用程序转换成独立的EXE文件的实用程序吗 644

30.1.9 如何在单元格中添加一个下拉列表,使得用户可以从这个列表中选择某个值 644

30.1.10 如果列表存储在活动工作簿中的另一个工作表内,还可以使用这种下拉列表方法吗 644

30.1.11 使用ApplicationCalculation将计算模式设置为手动。然而,这看来会影响所有的工作簿而不仅仅是活动工作簿 644

30.1.12 如何才能增加工作表中的列数 644

30.1.13 如何才能增加工作表中的行数 645

30.1.14 能改变工作表标签的颜色吗 645

30.1.15 能改变工作表标签的字体吗 645

30.1.16 能够改变单元格批注的默认字体和颜色吗 645

30.1.17 能够在Excel中播放声音吗 645

30.1.18 当打开工作簿时,Excel询问是否要更新链接,搜索了所有的公式之后,在这个工作簿中都找不到任何链接,这是bug吗 645

30.1.19 每次启动Excel都崩溃 645

30.1.20 在页眉如何打印出工作簿的完整路径和文件名 646

30.2 有关Visual Basic编辑器的问题 646

30.2.1 在Excel 95中,VBA模块还在工作簿中。当从Excel 97或者更高的版本中打开这个文件时,却看不到这些VBA模块了 646

30.2.2 能够使用VBA宏录制器录制所有的宏吗 646

30.2.3 Excel 95具有“在标记处录制”特性,利用该特性可以从现有宏中的某个特殊位置开始录制宏。这个特性仍然有用吗 646

30.2.4 有一些宏比较通用,想让它们在任何时候都能够用,最好采用哪种办法 647

30.2.5 找不到“个人宏工作簿”,它在哪里 647

30.2.6 用密码锁定了VBA工程,但是却忘记了命名。有什么办法可以解除锁定 647

30.2.7 如何编写宏来更改工程的密码 647

30.2.8 当插入新的模块时,总是从Option Explicit代码行开始。这是为什么 647

30.2.9 为什么VBA代码以不同的颜色显示?能改变这些颜色吗 647

30.2.10 能用VBA代码删除VBA模块吗 647

30.2.11 在Excel2000中编写了一个宏,这个宏往VB工程中添加一些VBA代码。当在Excel 2003中运行这个宏的时候,就会得到一条消息。这是怎么回事 648

30.2.12 如何编写宏来更改用户的宏安全性设置?希望在打开编写的应用程序时避免出现“工作簿中包含宏”消息 648

30.2.13 当打开工作簿时,得到标准的宏警告消息。可是,删除了这个工作簿中包含的所有宏。这是病毒吗 648

30.2.14 不理解保护工作表时UserInterfaceOnly选项的运作原理 648

30.2.15 如何辨别工作簿是否含有宏病毒 648

30.2.16 在VBA中使用符号(&)时遇到麻烦。当要连接两个字符串时,就会得到错误消息 648

30.2.17 VBA换行连续字符(下划线)不起作用 648

30.2.18 删除大量的VBA代码之后,发现XLS文件的大小并没有相应缩减,为什么 649

30.2.19 给很多用户发布一个XLS应用程序。在某些机器上,其中的VBA错误处理过程不起作用。为什么 649

30.3 过程 649

30.3.1 VBA过程和宏之间有什么区别 649

30.3.2 什么是过程 649

30.3.3 什么是Variant数据类型 649

30.3.4 Variant数组和Variant元素构成的数组之间有什么区别 649

30.3.5 什么是类型定义字符 650

30.3.6 编写了一个VBA函数,当从另一个过程调用它时运行得很好。但是当在工作表公式中使用它时却运行不了。这是怎么回事 650

30.3.7 想创建一个根据所键入的数据自动更改单元格格式的过程。例如,如果输入的值大于0,那么单元格的背景颜色就变成红色。这可能做到吗 650

30.3.8 “条件格式”特性很有用,但是更喜欢当在单元格中输入数据时执行其他类型的操作 650

30.3.9 可以监视其他类型的事件吗 650

30.3.10 试着输入了一个事件过程(Sub Workbook_Open),但是当打开工作簿时却没有执行这个过程。这是为什么 651

30.3.11 可以为某个特殊的工作簿编写事件过程,但是能够为任意打开的工作簿编写事件过程吗 651

30.3.12 对在Excel中创建公式非常熟悉。VBA也使用了同样的机制和逻辑运算符吗 651

30.3.13 如何在别的工作簿中执行过程 651

30.3.14 使用VBA创建了几个自定义函数。想在工作表公式中使用这些函数,但是发现在函数名称前加上工作簿的名称极其不方便。还有别的办法吗 651

30.3.15 希望在每次启动时加载某个特殊的工作簿。还希望自动执行这个工作簿中的某个宏。是不是不大可能做到 652

30.3.16 有一个工作簿使用了Workbook_Open过程。有没有办法避免当打开这个工作簿时执行这个过程呢 652

30.3.17 VBA过程能够访问没有打开的工作簿中的某个单元格的值吗 652

30.3.18 当从VBA关闭工作簿时,如何避免显示“保存文件”的提示 652

30.3.19 如何设置才能使得宏每小时运行一次 652

30.3.20 如何防止在宏列表中显示某个宏 652

30.3.21 可以将图表保存为GIF文件吗 653

30.3.22 某个VBA过程中的变量能在其他的VBA过程中使用吗?可以在别的模块中使用另外一个模块中的过程吗?可以在别的工作簿中使用另外一个工作簿中的过程吗 653

30.4 函数 653

30.4.1 创建了一个自定义的工作表函数。当用“插入函数”对话框访问这种函数时,出现“没有帮助信息”。如何才能使得“插入函数”对话框显示关于这个函数的说明呢 653

30.4.2 还能够在“插入函数”对话框中显示出自定义函数的参数帮助信息吗 653

30.4.3 自定义工作表函数出现在“插入函数”对话框的“用户定义”类别中。怎么才能使得自定义的函数出现在别的函数类别中呢 653

30.4.4 如何创建新的函数类别 654

30.4.5 创建了一个将用在工作表公式中的自定义函数。如果用户输入的参数值不合适,怎么才能使得函数返回真正的错误值(#VALUE!) 654

30.4.6 如何强制重算使用了自定义工作表函数的公式 654

30.4.7 能在VBA代码中使用Excel的内置工作表函数吗 654

30.4.8 Excel 95不支持WorksheetFunction方法。这意味着编写的Excel 2002应用程序不能兼容于Excel 95吗 655

30.4.9 在VBA代码中能够使用Analysis ToolPak的函数吗 655

30.4.10 有办法在消息框的文本中强制换行吗 655

30.5 对象、属性、方法和事件 655

30.5.1 不理解对象的概念,有可以使用的Excel对象的列表吗 655

30.5.2 有太多属性和方法可以使用。如何从中找出适用于某个特殊对象的方法和属性呢 655

30.5.3 集合的概念是什么?集合是对象吗 656

30.5.4 当在VBA代码中引用工作表时,就会得到“下标越界”的错误。没有使用任何下标,怎么会出现这种错误呢 656

30.5.5 如何避免用户的鼠标指针滚动到工作表的外部 656

30.5.6 Select和Application.Goto之间有什么区别 656

30.5.7 激活单元格区域和选中单元格区域之间有什么区别 656

30.5.8 有没有快速办法可以删除工作表的所有值,但是保持公式原封不动 657

30.5.9 知道如何编写VBA指令通过使用单元格地址来选中某个单元格区域,但是如果只知道单元格区域的行号和列号,又该如何编写VBA指令来选中单元格区域呢 657

30.5.10 有退出Excel的VBA命令吗?当试着录制“文件”?“退出”命令时,还没有看到它生成的代码Excel就关闭了 657

30.5.11 怎么关闭运行宏时的屏幕更新动作 657

30.5.12 在VBA中创建单元格区域名称的最简单的方法是什么 657

30.5.13 如何确定某个特殊的单元格或者单元格区域是否有名称 657

30.5.14 可以禁用显示在Excel的“打印预览”窗口中的“设置”和“页边距”按钮吗 658

30.5.15 宏在运行的时候能够在状态栏中显示消息吗?编写了一个很长代码的宏,如果能在状态栏中显示它的运行进度就好了 658

30.5.16 录制了一个VBA宏,它复制某个单元格区域并将其粘贴到别的区域中。这个宏使用了Select方法。还有更加有效率的方式进行复制粘贴吗 658

30.5.17 没有找到排序VBA数组的方法。只能先把值复制到工作表中,然后再使用Range.Sort方法吗 658

30.5.18 宏只对选中的单元格起作用,但是如果选中了别的内容(比如图表),则会运行失败。如何能确保选中单元格区域了呢 659

30.5.19 如何确定图表是否处于活动状态 659

30.5.20 VBA宏要计算用户选中的行数。当选中不相邻的行时,使用Selection.Rows.Count不起作用。这是bug吗 659

30.5.21 使用Excel创建发票,能生成惟一的发票编号吗 659

30.5.22 想使得某个工作簿一直保持可见,这样别的应用程序窗口就不能隐藏该工作簿了,有这种属性吗 660

30.5.23 如何阻止Excel在运行时显示消息?例如,下面将消除宏删除工作表时所出现的消息 660

30.5.24 可以用VBA指令选中某一列或者某一行中的最后一项吗?一般而言,可以使用Ctrl+Shift+下箭头键或者Ctrl+Shift+右箭头键组合,但是用宏应该怎么办呢? 660

30.5.25 如何确定某个特殊列中的最后一个非空的单元格 660

30.5.26 如果A65536单元格不为空,上述指令就不会起作用 660

30.5.27 VBA引用可以变得非常长,特别是在需要通过引用工作表和工作簿使得对对象的引用符合标准时。能缩减这种引用的长度吗 661

30.5.28 如果不知道数组包含多少元素,可以声明数组吗 661

30.5.29 能允许用户撤销宏吗 661

30.5.30 有一个1-2-3宏能够暂停运行使得用户可以在某个特定的单元格中输入数据。如何在VBA宏中获得同样的效果呢 661

30.5.31 VBA有一个InputBox函数,但是还有一个Application对象的InputBox方法,两者一样吗 661

30.5.32 当使用RGB函数指定颜色后,有时候颜色不对。为什么 662

30.5.33 编写VBA指令创建一个公式,如果需要在引号引起来的文本中插入引号("),该怎么办呢 662

30.5.34 创建了一个数组,但是数组中的第1个元素却成了第2个元素。这是为什么 662

30.5.35 希望VBA代码运行的速度尽可能快,有什么建议 662

30.6 用户窗体 662

30.6.1 只需要少量的信息,而使用用户窗体似乎有些大材小用,有别的办法吗 663

30.6.2 用户窗体上有12个命令按钮。如何指定当单击其中任意一个按钮时执行某一个宏 663

30.6.3 如何在用户窗体中显示图表 663

30.6.4 如何从用户窗体的标题栏上删除“关闭”按钮,不希望用户单击这个按钮来关闭窗体 663

30.6.5 创建了一个用户窗体,其中的控件用ControlSource属性链接到了工作表上的单元格。这是最佳的办法吗 663

30.6.6 能为用户窗体创建一个控件数组吗?Visual Basic可以这么做,但是不知道在Excel VBA中如何做 663

30.6.7 隐藏用户窗体和卸载用户窗体之间有区别吗 664

30.6.8 做其他事情时如何保持用户窗体的打开状态 664

30.6.9 在编写UserForml.Show vbModeless时,Excel 97出现一个编译错误。如何在Excel 2000以及更高的版本中使得窗体成为无模式的,而同时使其在Excel 97中保持模态设置 664

30.6.10 想在执行耗费长时间的过程的同时显示一个进度条,就像在安装软件时看到的那样。该怎么做呢 664

30.6.11 如何使用Excel的绘图工具在用户窗体上创建简单的图形 665

30.6.12 如何才能在用户窗体上产生文件及其目录的列表,以便用户可以从这个列表中选择文件呢 665

30.6.13 想把两个字符串连接起来并将它们显示在一个列表框控件中。但是在实现的时候,对不齐这些字符串。怎么才能使得字符串之间具有相等的间距呢 665

30.6.14 想用条目填充列表框或者组合框控件,有没有简单的办法 665

30.6.15 能从VBA显示内置的Excel对话框吗 665

30.6.16 尝试了上一个问题中描述的方法,但是却收到错误消息。这是为什么 665

30.6.17 每次创建用户窗体时,都要重复添加“确定”按钮和“取消”按钮的步骤。有没有办法可以使得这些控件自动出现呢 665

30.6.18 可以创建不带标题栏的用户窗体吗 666

30.6.19 录制了一个打印文件的VBA宏。然而,好像无法在代码中提供文件名。无论怎么试,都会得到希望提供文件名的提示 666

30.6.20 当在用户窗体上单击某个按钮时,没有任何反应。哪里做错了 666

30.6.21 不管视频显示器的分辨率是多少,能创建大小一样的用户窗体吗 666

30.6.22 可以创建用户窗体使得用户能够通过指示选中工作表的某个单元格区域吗 666

30.6.23 能改变用户窗体的启动位置吗 666

30.6.24 可以往工作簿中添加Excel 5/95对话框工作表吗 666

30.7 加载宏 666

30.7.1 从哪里可以获得Excel加载宏 667

30.7.2 如何安装加载宏 667

30.7.3 当从Excel的“加载宏”对话框安装加载宏时,加载宏没有名称或者说明。如何给加载宏添加说明呢 667

30.7.4 有一些加载宏不再使用,如何才能从“加载宏”对话框的“可用加载宏”列表中将它们删除呢 667

30.7.5 如何创建加载宏 667

30.7.6 想创建一个加载宏,但是“保存类型”下拉列表中没有提供加载宏方面的选项 667

30.7.7 应该将所有必要的工作簿转换为加载宏吗 667

30.7.8 需要将工作簿保存两个副本(XLS版本和XLA版本)吗 668

30.7.9 如何在创建加载宏之后对其进行修改呢 668

30.7.10 XLS文件与依据XLS文件创建的XLA文件之间有什么区别?XLA版本是编译后的结果吗?XLA版本是否运行得更快呢 668

30.7.11 如何保护加载宏的代码,使得别人查看不到它的代码 668

30.7.12 XLA加载宏安全吗?换句话说,如果发布了XLA文件,能保证没有人能够查看其中的代码吗 668

30.8 命令按钮 668

30.8.1 Excel 95拥有一个很方便的菜单编辑器,但是Excel 97以及更高的版本中却没有这种菜单编辑器。该怎么办 668

30.8.2 能编辑用Excel 95的菜单编辑器创建的菜单吗 668

30.8.3 当用“自定义”对话框更改菜单时,菜单的改变是永久性的。如何才能使得菜单的更改只应用于一个工作簿呢 669

30.8.4 知道可以使用Faceld属性给工具栏控件添加图像,但是如何找到对应于某个特殊图像的Faceld值呢 669

30.8.5 往工作簿附加了一个新版的工具栏,但是Excel继续使用老式的版本,如何才能使用新版本的工具栏呢 669

30.8.6 已经对Excel的工具栏做了大量的修改。如何才能将所有这些工具栏恢复成原来的状态呢 669

30.8.7 如何使得自定义菜单只在某个特殊的工作簿处于活动状态时才显示出来 669

30.8.8 如何在工具栏上的两个按钮之间添加分隔栏 669

30.8.9 如何在菜单项旁边显示选中标记 670

30.8.10 不小心删除了工作表菜单中的某些项,但是找不回来,重新启动Excel也不能修复 670

30.8.11 如何禁用所有单击右键出现的快捷菜单 670

30.8.12 能禁用当用户在工具栏上单击鼠标右键出现的工具栏列表吗 670

第8部分 附录 671

附录A Excel在线资源 672

附录B VBA语句和函数引用 677

附录C VBA错误代码 684

附录D 光盘上的内容 687

相关图书
作者其它书籍
返回顶部