书海网短评:
适读人群:初学VBA的用户,Excel的高级用户目前国内VBA图书讲插件开发思路的书极少,而市场对插件的需求却极大,开发插件有较广阔的前景。《ExcelVBA与VSTO基础实战指南》不仅用较大的篇幅讲述插件开发相关的
目前国内VBA图书讲插件开发思路的书极少,而市场对插件的需求却极大,开发插件有较广阔的前景。《ExcelVBA与VSTO基础实战指南》不仅用较大的篇幅讲述插件开发相关的知识,而且加入了执行插件命令后可以撤销的设计思路,这在VBA图书市场上并无先例。《ExcelVBA与VSTO基础实战指南》除VBA外,还提供VSTO知识,采用VB.net语法编写。
VSTO比VBA更强大,能实现的功能也更多,同时还更安全。《ExcelVBA与VSTO基础实战指南》详细罗列了VBA与VSTO在代码上的差异,然后演示修改VBA代码,使其符合VB.net语法规则的基本思路,从而让读者快速学会利用VSTO开发Excel插件。掌握《ExcelVBA与VSTO基础实战指南》第16章到第19章的知识,仅需半个月即可学会VSTO,不需要像学习C#那样,耗费半年甚至一两年时间。
《ExcelVBA与VSTO基础实战指南》属于学习ExcelVBA的初中级教材,重点阐述了ExcelVBA的基本理论、代码自动化以及开发Excel插件的思路。通读《ExcelVBA与VSTO基础实战指南》可以轻松应对制表工作中的疑难,同时还可以开发商业插件。《ExcelVBA与VSTO基础实战指南》包括五部分内容,开头部分简述自动化操作的意义和成果展示;第二部分详细剖析VBA的所有基础概念,包含代码的存放位置、写书方式、调用方式,认识对象、属性、方法与事件,以及理解变量、常量与数据类型并且掌握循环语句、条件语句、防错语句等知识;第三部分是VBA的高级应用,包含数组、窗体、字典、功能区设计、插件开发和撤销代码等知识;第四部分介绍通过VSTO开发Excel插件;第五部分提供365个VBA常见疑难解答。《ExcelVBA与VSTO基础实战指南》每段代码都有思路分析,且对每句代码都提供了代码含义的详细注释,力求使讲解过程可以更加精准,让代码更易理解,为读者提供更优秀的阅读体验。
罗刚君,网名andysky,从事Excel研究及VBA二次开发10多年,擅长Excel函数、图表、透视表和VBA,尤其对ExcelVBA有着相当丰富的开发经验和熟练的实战技能,也拥成丰硕的开发成果。
作者担任过近10个Excel相关论坛的版主,著有15本Excel图书,书名如下:
1.《Excel2007VBA范例大全》
2.《Excel2007技法与行业应用实例精讲》
3.《Excel2007VBA开发技术大全》
4.《Excel2007函数案例速查宝典》
5.《ExcelVBA程序开发自学宝典》
6.《Excel2010VBA编程与实践》
7.《Excel2010函数与图表速查手册》
8.《ExcelVBA程序开发自学宝典(第2版)》
9.《Excel函数、图表与透视表从入门到精通》
10.《来吧!带你玩转ExcelVBA》
11.《ExcelVBA程序开发自学宝典(第3版)》
12.《Excel2013函数案例自学宝典(实战版)》
13.《Excel2013VBA编程与实践》
14.《Excel2016实用技巧自学宝典》
15.《ExcelVBA与VSTO基础实战指南》
第1章自动化操作.1
1.1自动化操作的价值1
1.2利用宏简化日常工作3
1.3使用VBA强化Excel功能.12
1.4ExcelVBA的发展前景15
1.5课后思考16
第2章代码应用基础17
2.1区分VBE代码窗口.17
2.2录入代码25
2.3四种代码执行方式.32
2.3.1调用快捷键.32
2.4保存代码36
2.5让代码畅通无阻.37
2.6反复调用相同代码39
2.7课后思考.40
第3章从概念开始认识VBA.42
3.1认识过程.42
3.2关于参数.49
3.3理解对象54
3.4对象的属性与方法56
3.5对象的事件.59
3.6课后思考63
第4章对象及其层次结构.65
4.1查看所有对象65
4.2对象的层次与引用方式.67
4.3Range对象.74
4.4图形对象95
4.5表对象98
4.6工作簿对象101
4.7Excel应用程序对象103
4.8课后思考105
第5章揭密数据类型与变量、常量106
5.1数据类型106
5.2定义变量112
5.3定义常量122
5.4课后思考123
第6章条件语句与循环语句125
6.1If语句解析.125
6.2SelectCase语句解析.140
6.3IIf函数.145
6.4ForNext语句解析.147
6.5ForEach…Next语句解析.153
6.6DoLoop语句解析.156
6.7课后思考166
第7章四类常见对象的应用案例168
7.1单元格对象168
7.2图形对象186
7.3工作表对象194
7.4工作簿对象204
7.5课后思考211
第8章深入剖析VBA的各种事件.212
8.1事件的级别与顺序212
8.2禁用与启用事件.215
8.3工作表事件详解.217
8.4工作簿事件详解.229
8.5应用程序级事件详解.239
8.6按时间执行代码242
8.7课后思考244
第9章处理代码错误245
9.1代码错误类型分析245
9.2错误处理语句248
9.3案例应用258
9.4课后思考265
第10章使用数组提升程序效率267
10.1基本概念.267
10.2数组函数.281
10.3案例分析.289
10.4课后思考.302
第11章集合与字典的应用.303
11.1Collection:集合303
11.2Dictionary:字典310
11.3课后思考.321
第12章设计程序窗体.323
12.1窗体与控件简介323
12.2设置属性.335
12.3窗体与控件的事件355
12.4窗体应用实战366
12.5课后思考.375
第13章定义Ribbon功能区选项卡377
13.1功能区选项卡开发基础.377
13.2Ribbon定制之语法分析.380
13.3使用回调函数强化功能区.395
13.4使用模板.408
13.5课后思考.412
第14章开发通用插件.413
14.1插件的分类413
14.2漫谈加载宏414
14.3制作工作表批量重命名插件.417
14.3.6安装并测试功能422
14.4课后思考.425
第15章让VBA代码也能撤销.426
15.1突破撤销限制426
15.2设计可撤销的插件428
15.3课后思考.436
第16章使用VSTO设计插件的基本步骤.437
16.1安装VisualStudio2015437
16.2Excel插件开发流程440
16.3将插件打包成安装程序.444
16.4课后思考.449
第17章VSTO与VBA的差异450
17.1变量、常量与数据类型.450
17.2函数.452
17.3数组.454
17.4窗体.455
17.5字典与正则表达式459
17.6菜单与功能区460
17.7管理文件与目录461
17.8杂项.463
17.9课后思考.465
第18章将VBA插件升级为VSTO插件466
18.1设计插件框架466
18.2升级Sub过程“创建工资条”.468
18.3升级窗体“文件批量命名”.470
18.4升级事件过程“零值控制器”.477
18.5打包安装程序478
18.6课后思考481
第19章VSTO的更多高级应用482
19.1添加窗体状态栏482
19.2创建任务栏图标484
19.3自动发邮件486
19.4全自动合并数据488
19.5设计任务窗格494
19.6课后思考.498
第20章365个VBA常见问题答疑499
1.2.4宏的优缺点分析
根据前面三个小节,已经对宏有了基本的认识,总体来说宏有以下特性。
1.优点
(1)宏代码严格来说不是程序,录制宏及调用宏也不算编程。但是录制宏能实现与编程相近的功能,让原本需要多个步骤的工作一键完成,而且宏代码可以反复调用。
(2)录制宏时可以按操作顺序如实记录所有操作信息,所以执行宏与录制宏时的操作效果是完全一致的。而在实际工作中,当步骤较多且需要重复操作时,手动操作较难确保每次的操作顺序一致,也难确保结果的保存位置、大小等参数一致,甚至遗漏某个操作步骤的可能性也同样存在。(3)宏是以代码的形式存在的,而代码可以调整顺序或者增删语句,所以当工作需求变化时,稍微调整宏代码即可完成所有工作,而不需要重新执行可能需要几十个步骤才能完成的工作。
(4)另外,学习录制宏仅需三分钟,在录制宏时只需要做基础操作,不需要理会代码的含义、语法、思路,宏代码就会自动生成,这较之于其他不带录制功能的编程语言有更多的优越性。
2.缺点
微软公司在Office平台中推广宏仅短短几年,之后就用VBA替代了宏的地位,无疑是宏的局限性阻碍了它的发展,而VBA正好可以弥补宏的缺陷,它在灵活性、效率和全面性方面都远远超过宏。
首先,并非所有操作都能通过录制宏产生相应的代码,这意味着宏的全面性不足。
其次,录制宏多数时候会产生一些冗余代码,从而降低宏的执行效率。例如前面两次录制宏时,“设置单元格的字号为20”这一个步骤产生的代码包括设置字号、字体、删除线、阴影、主题颜色等,如以下代码所示:
WithSelection.Font
.Name="宋体"
.Size=20
.Strikethrough=False
.Superscript=False
.Subscript=False
.OutlineFont=False
.Shadow=False
.Underline=xlUnderlineStyleSingle
.ThemeColor=xlThemeColorLight1
.TintAndShade=0
.ThemeFont=xlThemeFontMinor
EndWith
如果采用VBA编程,那么只需要“Selection.Font.Size=20”一句代码即可满足工作需求,所以宏与VBA的效率差异较大。
再次,录制宏时只能记录操作,宏代码不会执行判断。例如可以录制“删除A列”的操作,但是无法通过录制宏实现“假设A列空白则整列删除”这类需求。而且,即使是能录制的操作也仅针对单一的操作,无法录制可循环的操作。例如删除工作表200列数据中所有奇数列的值,如果采用录制宏产生代码,那么在录制时需要删除100次,产生超过200行的代码。如果采用VBA编程,那么仅需以下几句代码即可完成,而且将极大节省执行时间。
Sub删除前200列中奇数列的值()'此过程代码放在模块中执行
Fori=1To200Step2'从1循环到200,步长值为2(即隔2列删除一列的值)
Columns(i).Clear'将第i列的值删除
Nexti'执行下一轮循环
EndSub
最后,录制宏的灵活性差。不管是单元格,还是工作表、图片、图表,在录制宏时都采用固定的名称,一旦实际情况变化时,录制宏产生的代码将会出错。例如在空白工作表中录制创建矩形并设置其格式的宏,Excel会自动将图形命名为“矩形1”,并对“矩形1”设置格式。然而如果实际执行宏的环境产生了变化,宏代码在调用“矩形1”时则可能失败。只有采用VBA编程才能让代码具有灵活性,自动适应环境的变化,让代码可防错,并且通用于不同环境。所以《Excel VBA与VSTO基础实战指南》的重点是VBA教学,而不局限于应用宏。
MicrosoftExcel是制表工具中最强大的软件,但是Excel内置的功能无法满足相对复杂的工作需求,而且不具备自动化操作的特性。在此前提下,VBA应运而生,它可以让复杂操作简单化,让烦琐工作自动化。
目前MicrosoftOffice已升级到2016版,Excel自带的VBA版本为7.1。《Excel VBA与VSTO基础实战指南》以Excel2016为基础编写,但是由于Excel2010、Excel2013和Excel2016的VBA的差异微乎其微,小到可以忽略,因此读者也可以使用Excel2010、Excel2013来学习《Excel VBA与VSTO基础实战指南》的知识。
《Excel VBA与VSTO基础实战指南》目的:
《Excel VBA与VSTO基础实战指南》重点有两个,其一是普及ExcelVBA基础知识,其二是开发Excel插件。《Excel VBA与VSTO基础实战指南》用了超过50%的篇幅阐述ExcelVBA的基本概念与语法规则,力图使读者在强化编程理论知识的基础上再学习插件开发等进阶应用。在基础章节中,重点展示了过程、参数、变量、常量、数据类型、对象、属性、方法和事件等概念,并通过第7章和第8章的数十个案例印证这些理论的价值,以及调用思路。
《Excel VBA与VSTO基础实战指南》从第13章开始,重点讲述开发Excel插件的知识和步骤,并提供了诸多模板供读者调用。Excel插件从大体上分为两类,其一是开源的加载宏文件,其二是受保护的加载项。加载宏通常为xla或者xlam格式,直接在VBA的代码编译器中编写,《Excel VBA与VSTO基础实战指南》不仅详细演示了开发加载宏的所有步骤和思路,还提供了让插件执行后可以撤销的方法,让用户在使用过程中不用担心覆盖重要数据,从而提升插件的品质。
加载项通常是DLL格式,使用VB或者VB.net开发,VB开发的插件无法用于64位的Office软件,因此《Excel VBA与VSTO基础实战指南》为读者展示了VB.net中的Office插件开发工具VSTO的应用。
VSTO属于VisualStudio平台中的工具,《Excel VBA与VSTO基础实战指南》以VisualStudio2015为例,详细分析了VSTO
与VBA代码的语法差异,并通过三个最具代表性的插件设计步骤演示利用VSTO封装代码的过程,同时也为读者提供诸多模板,让大家在实际工作中利用这些模板快速地设计出自己的插件。
《Excel VBA与VSTO基础实战指南》结构:《ExcelVBA与VSTO基础实战指南》大体分为五部分:
第一部分包含第1章,主要说明VBA的价值,从而提升读者对VBA的学习热情与兴趣。
第二部分最重要,详细剖析了VBA的基础理论,包含第2章到第9章。此部分内容重点展示了ExcelVBA的所有基础理论,包含代码的存放位置、输入代码的方式、调用代码的方式、如何让代码运行时畅通无阻,理解什么是过程、对象、参数、事件、属性、方法、变量、常量和数据类型,并逐一讲解了工作中最有用的条件语句、循环语句和防错语句的语法,同时提供了数十个案例来加深读者对这些基础理论的理解。
第三部分包含第10章到第15章,分别介绍了通过数组优化代码,利用字典去除重复值,以及设计功能区中的菜单的思路,并提供了大量的模板。最后讲解开发通用插件,并让插件在执行过程中可以撤销,这是《Excel VBA与VSTO基础实战指南》的一大特色内容。
第四部分属于VSTO的应用,也就是利用VB.net来封装VBA代码,将它打包成受保护的安装程序,从而提升插件代码的安全性和专业性。
第五部分包含第20章,本章为读者提供365个VBA思考题目,并在赠送的案例文件中提供了答案。
《Excel VBA与VSTO基础实战指南》特点:
相比同类书籍,《Excel VBA与VSTO基础实战指南》在内容编排上具有以下特点:
1.《Excel VBA与VSTO基础实战指南》对于ExcelVBA的基础理论有着相当详细的讲解,包含200多页,8个章节。要学好编程必须基础理论掌握通透,否则编写三五年代码后仍然不能得心应手。基础理论是程序员十分重要的必备素质,而不应该只重实战轻理论。
2.目前国内VBA图书讲插件开发思路的书极少,而市场对插件的需求却极大,开发插件有较广阔的前景。《Excel VBA与VSTO基础实战指南》不仅用较大的篇幅讲述插件开发相关的知识,而且加入了执行插件命令后可以撤销的设计思路,这在VBA图书市场上绝无仅有。
3.《Excel VBA与VSTO基础实战指南》除VBA外,还提供VSTO知识,采用VB.net语法编写。
VSTO比VBA更强大,能实现的功能也更多,同时还更安全。《Excel VBA与VSTO基础实战指南》详细罗列了VBA与VSTO在代码上的差异,然后演示修改VBA代码,使其符合VB.net语法规则的基本思路,从而让读者快速学会利用VSTO开发Excel插件。掌握《Excel VBA与VSTO基础实战指南》第16章到第19章的知识,仅需半个月即可学会VSTO,不需要像学习C#那样,耗费半年甚至一两年时间。
4.《Excel VBA与VSTO基础实战指南》在每章末尾会提供5个思考题,最后一章再追加365个思考题,一共460个。期望读者通过这些题目扩展知识面,同时能加深对书中理论知识的印象。
5.《Excel VBA与VSTO基础实战指南》提供读者交流群,读者购书后可以加群下载案例文件,同时可以在群里与作者交流,加快学习进度。









