本书面向不同层次的Excel VBA开发者,系统讲解了Excel VBA开发的基本概念;Excel对象模型;应用Excel和VBA进行数据处理;Excel图表的VBA编程;用户窗体和Excel工作表界面设计;开发效率、互操作、API调用等高级话题;并结合3个实际案例,介绍了如何在工作实际中使用VBA和Excel提高工作效率,设计Excel VBA应用程序。本书还对VBA语言进行了一个简短的概述,涵括了基本的编程概念、错误处理及面向对象编程等内容。\r\n 除了对VBA语言的讲解,本书还以数据处理、界面设计、Excel图表等为专题,将Excel功能、编程知识和实际应用衔接起来,并通过3个较大的实际案例,以达到理论联系实际的作用。\r\n 本书无论对想通过Excel VBA来提高工作效率,使用Excel和VBA作为数据处理平台的读者,还是对使用Excel作为开发平台的读者,都将是学习Excel VBA开发的首选。
第1章 Excel和VBA简介 \r\n 1.1 关于Excel和VBA \r\n 1.2 Excel作为数据处理平台 \r\n 1.3 Excel作为开发平台 \r\n 1.4 宏、加载宏和VBA \r\n第1部分 入 门 篇\r\n 第2章 Excel与宏 \r\n 2.1 宏 \r\n 2.2 录制宏 \r\n 2.2.1 宏的录制步骤 \r\n 2.2.2 录制宏的一个小例子 \r\n 2.3 运行宏 \r\n 2.3.1 运行录制的宏 \r\n 2.3.2 将宏加入菜单或工具栏 \r\n 2.4 查看和编辑宏\r\n 2.5 加载宏 \r\n 第3章 VBA初步 \r\n 3.1 VBA简介 \r\n 3.2 VBA快速入门 \r\n 3.2.1 VBA开发环境 \r\n 3.2.2 VBA工程及其组成 \r\n 3.2.3 编写代码 \r\n 3.2.4 模块、过程和函数 \r\n 3.2.5 创建过程和函数 \r\n 3.2.6 过程调用 \r\n 3.2.7 变量 \r\n 3.2.8 程序流程 \r\n 3.2.9 条件语句 \r\n 3.2.10 循环语句 \r\n 3.2.11 数组 \r\n 3.2.12 善用工具及其他 \r\n 3.3 应用VBA操作Excel \r\n 3.3.1 Excel对象模型 \r\n 3.3.2 Excel对象模型中的常用对象 \r\n 3.4 应用实例 \r\n 3.4.1 使用VBA合并列\r\n 3.4.2 自动隐藏或显示表格中无数据的行 \r\n 3.4.3 使用VBA操作工作表单元格 \r\n 3.4.4 查找工作表的第一个空行 \r\n 3.4.5 改变Excel界面的标题 \r\n 3.4.6 隔行格式化工作表 \r\n 3.4.7 批量修改数据 \r\n 第4章 应用VBA自定义函数 \r\n第2部分 进 阶 篇\r\n 第5章 VBA语言 \r\n 第6章 Excel的对象模型 \r\n第3部分 专 题 篇\r\n 第7章 数据处理 \r\n 第8章 Excel图表 \r\n 第9章 界面设计 \r\n第4部分 实 例 篇\r\n 第10章 应用实例:批量数据导入工具 \r\n 第11章 应用实例:基于Excel的查询工具 \r\n 第12章 应用实例:GCDPlot \r\n第5部分 高 级 篇\r\n 第13章 高级话题 346\r\n第6部分 附录\r\n附录A VBA命名规则 \r\n A.1 变量、常量、自定义类型和枚举 \r\n A.2 过程和函数 \r\n A.3 模块、类模块和用户窗体 \r\n A.4 VBA工程 \r\n附录B VBA代码规范 \r\n B.1 代码的排版 \r\n B.2 注释 \r\n B.3 程序版本 \r\n B.4 一些基本原则 \r\n附录C 可用于VBA代码的工作表函数列表 \r\n C.1 可用于Visual Basic的工作表函数列表(按字母顺序) \r\n C.2 可用于Visual Basic的工作表函数列表(按类别排序) \r\n附录D VBA语言参考 \r\n D.1 VBA语法参考 \r\n D.1.1 变量 \r\n D.1.2 数据类型 \r\n D.1.3 运算符 \r\n D.1.4 数组 \r\n D.1.5 程序流程控制 \r\n D.1.6 日期与时间 \r\n D.1.7 目录和文件 \r\n D.1.8 文件读写 \r\n D.1.9 类模块和ActiveX、COM对象 \r\n D.1.10 注册表操作 \r\n D.1.11 错误处理 \r\n D.1.12 其他函数、关键字 \r\n D.2 对象 \r\n D.2.1 Collection(集合)对象 \r\n D.2.2 Dictionary(字典)对象 \r\n D.2.3 Err对象 \r\n D.2.4 Debug对象 \r\n D.2.5 FileSystemObject对象 \r\n D.3 常用函数 \r\n D.3.1 数学函数 \r\n D.3.2 字符串函数 \r\n D.3.3 财务函数 \r\n D.3.4 数据类型转换函数 \r\n D.3.5 数据类型检查函数 \r\n D.3.6 交互函数 \r\n D.3.7 注册表函数 \r\n D.4 常用常量 \r\n D.4.1 颜色 \r\n D.4.2 文件输入/输出 \r\n D.4.3 用户窗体 \r\n D.4.4 Keycode(键代码) \r\n D.4.5 MsgBox参数和返回值 \r\n D.4.6 日期格式 \r\n D.4.7 其他
马维峰,3sNews(www.3snews.net)、《3s新闻周刊》技术总编,中国地质大学地理信息工程专业博士生,知名3s博客。主要从事空间分析、地理信息系统开发和应用研究。他是基于Excel的开源地学图解系统GCDPlot的作者,该Excel加载宏在地学领域得到了广泛应用和好评。曾主持和参与开发各类GIS系统、信息系统10多个。精通VB、VB.net、VBA等程序设计语言,熟悉GIS系统开发和Microsoft Office开发,熟悉Mapinfo(MapX)、ArcGIS、SuperMap等GIS开发平台。在个人博客(maweifeng.cnblogs.com)上有大量与Office开发、GIS有关的技术文章和评论文章。
本书起源
笔者大概从1998年开始学习VB,从喜欢到失望,从失望到欣喜,从欣喜到平淡,大概是很多和自己一样的程序员的学习心路。而对于Office的强大功能,对于VBA,领会得却很晚。例如Excel,虽然也一直知道其功能很强大,但到底如何强大,有什么有别于其他同类软件的特色,却不甚清楚。大概在2003年,应工作需要,查阅了一些Excel的资料,开始学习Excel数据处理和VBA开发。因为当时自己已是一个熟练的VB程序员,所以VBA语法并不是难点和重点,而在很多Excel VBA开发的书中较少涉及的内容,或者没有很清楚讲解的问题,例如,一个工作表内的某些数据如何获得,某个或某几个单元格的值怎么高效地获取和赋值,如何打开关闭Excel文件,如何正确部署最后的程序,如何绘制复杂的图表,等等诸如此类的问题,反而经常会困惑自己很久。
因此,本书将以笔者的学习经验为依据,以一个程序员和实际使用者的角度,讲解Excel VBA开发的种种问题,并对笔者在实际中遇到的一些内容做深入探讨;对于一些设计问题、效率问题、程序风格,书中都会给出笔者的建议。
在很长的一段时间内,作为Office开发的方式,VBA和VSTO应该会共存,而对于非专业程序员,首选应该还是VBA,此为其一。其二,VBA开发的核心在于对Office的对象模型的掌握,而这也是本书的重点之所在。
本书特色
这几年,通过网络和线下帮助很多认识、不认识的朋友解决一些VBA开发中的实际问题,笔者深深感觉到Cooper在《交互设计之路》中谈到的“程序员和一般人的差别”的问题,一些在程序员或有程序设计背景的用户眼里习以为常的事情,但对于一般用户,可能就是一个门槛或者一道障碍,会将其关闭在类似VBA程序设计的大门之外。很多的关于VBA程序设计的书籍作者或多或少都会有程序设计的背景,因此很少有关于VBA程序设计的书可以让一般用户轻松入门,因此笔者在安排全书内容时,特别是在“VBA初步”一章(第3章)尽量以step by step的方式来叙述VBA开发的初步知识,其中也有意略过一些VBA的内容,以使一般读者可以轻松入门。本书第5章VBA语言则重新回到VBA语言,以比较正式的方式叙述VBA程序设计的内容。这两章的内容在某些方面有所重叠,是“有意为之”。
另一方面,目前大多Excel与VBA程序设计的书籍,都停留在“图解+说明”的层次,缺乏对Excel对象模型和VBA语言的系统探讨,与实际应用脱节,因此,很多人在学习以后,虽然也学会了VBA语法,知道了一些Excel对象模型的知识,会使用控件画一些用户界面,但如何解决实际问题却一筹莫展。因此,除了对VBA语言的讲解,本书还以数据处理、界面设计、Excel图表等为专题,将编程知识和实际应用衔接起来,并安排了3个比较多的应用实例,以达到理论联系实际的作用。
书中有很多代码片段,这些代码片段都是比较具有代表性的代码,读者可以通过这些代码的学习来掌握VBA语言和Excel对象模型。一本讲述程序设计语言的书籍,很多精华都在代码之中,因此希望读者朋友可以亲自试试。代码、例子和文字是紧密配合的,没有了代码,也就失去了全书的灵魂所在。任何程序设计语言的书,其中的说明文字必须通过代码来体会,这是笔者很多年来自己的体会。书中很少有超过半页纸的代码,大多数代码都控制在半页之内,目的在于易于掌握和理解。
书中关于运行效率的说明,都经过笔者亲自测试,具体测试方法在运行效率一节有详细说明。书中包括的代码风格之类的部分观点只是个人喜好问题,特此说明,读者可以根据自己的判断取舍。写作过程中,有时会觉得有太多的问题需要说明,却限于篇幅,不能一一展开;有时又不知如何下笔,不知如何才可以清楚简洁地讲明白一个问题。对于很多自己的经验或者教训,只能在合适的时候插入只言片语,古人言“中有苦心而不能显”,“中有调剂而人不知”,大概如是。
本书不求对Excel和VBA面面俱到地介绍,而且这也是不可能的。从内容选择和取舍来说,本书更注重实用,从笔者的经验出发,从应用的角度来介绍Excel VBA的内容,而不是相反。
本书的内容组织
本书共分为14章,可以划分为以下6个部分。
第1部分,入门篇
从第2章“Excel与宏”到第4章“应用VBA自定义函数”,主要面向VBA语言的初学者,或没有学习过VBA语言的读者。
第2部分,进阶篇
包括第5章“VBA语言”和第6章“Excel的对象模型“,比较系统地讲解VBA和Excel对象模型。
第3部分,专题篇
包括第7章“数据处理”,第8章“Excel图表”,第9章“界面设计”,主要分专题深入介绍相关的Excel对象模型和VBA程序设计方法。
第4部分,实例篇
从第10章到第12章,主要讲解3个Excel VBA开发的实例。
第5部分,高级篇
第13章“高级话题”,介绍API调用、程序效率等话题。
第6部分,附录
包括VBA命名规则、VBA代码规范和经过整理的可以在VBA中使用的工作表函数列表。
本书读者对象
本书的读者应该可以使用Excel,知道Excel的基本概念和名词,例如公式、函数、宏。对于基本没有Excel开发和程序设计经验的读者,第2章到第4章以比较浅显的方式介绍了Excel宏的录制、VBA开发、Excel对象模型、自定义函数等内容,可以作为Excel和VBA开发的入门材料;第5章则系统地介绍VBA语法,作为对VBA语言的一个全面介绍。对于熟悉VBA或VB的读者,可以略过这部分。其实对于Office系列的开发,语法只是很小的一部分,主要的难点和问题在于相应的对象模型及其应用,所以书中的大多数内容其实只是围绕Excel对象模型的解释和讲解。
详细来说,本书的读者可以细分为:
(1)应用Excel作为基础平台,提供相应解决方案的程序员;
(2)各类科研工作者,应用Excel进行数据处理,这其实是本书最初的写作动机;
(3)在各类企事业单位需要进行大量机械性和重复性的信息、数据处理工作,希望可以利用Excel自动化这些工作的人员;
(4)其他对Excel自动化和VBA编程感兴趣的读者。
本书体例
(1)所有关于菜单工具栏的操作都以以下形式表示。
“文件-打开”
(2)对于一些技巧,需要提醒说明的问题,文中都以以下形式做了说明。
打开IDE环境的方法
通过“工具—宏—Visual Basic编辑器”;
通过快捷键“Alt + F11”;
右键单击工具栏,选择“Visual Basic”,此工具栏有录制宏,打开VBA IDE等的快捷按钮。
(3)程序代码以以下方式显示(灰底、字体为Courier New、5号)。
#001 Function MyAdd(varA, varB) As Variant
#002 MyAdd = varA + varB
#003 End Function
(4)对于一些需要说明的问题,一般以脚注方式列出。
本书使用的Excel版本是2003,但书中绝大多数内容并未涉及Excel 2000之后的内容;除了少数内容,书中所介绍的内容也与Excel 97内容兼容。对于较新版本的内容,在介绍时都尽可能地做了说明。
最后祝学习愉快!
无封面