
《Excel VBA与VSTO基础实战指南》属于Excel VBA初中级应用,以及VSTO技术的综合实战。本书旨在普及Excel VBA基础理论,以及通过VBA的高级应用扩展Excel的功能,提升读者的制表效率,解决工作中的疑难,同时亦可藉此开发商业插件。本书内容分为五个部分,第一部分是第1章,通过操作自动化的需求引出宏与VBA的简介;第二部分包括第2章到第9章,属于VBA的基础理论知识,此部分属于VBA必修课;第三部分包括第10章到第15章,属于VBA进阶知识,对VBA有足够兴趣且有足够时间者可以深入学习;第四部分是第16章到第19章,讲述VBA的升级应用,VSTO(Visual Studio Tools For Office),学几这4章后可以将VBA代码封装成32位和64位通用的Office插件。第五部分包含最后一章,该章提供365个疑难解答,对VBA学习过程中的常见问题提供笔者自己的观点,有助于读者解决工作中的疑难及加深对VBA的理解。
前 言 Microsoft Excel是制表工具中最强大的软件,但是Excel内置的功能无法满足相对复杂的工作需求,而且不具备自动化操作的特性。在此前提下,VBA应运而生,它可以让复杂操作简单化,让烦琐工作自动化。 目前Microsoft Office已升级到2016版,Excel自带的VBA版本为7.1。本书以Excel 2016为基础编写,但是由于Excel 2010、Excel 2013和Excel 2016的VBA的差异微乎其微,小到可以忽略,因此读者也可以使用Excel 2010、Excel 2013来学习本书的知识。 本书目的 本书重点有两个,其一是普及Excel VBA基础知识,其二是开发Excel插件。 本书用了超过50%的篇幅阐述Excel VBA的基本概念与语法规则,力图使读者在强化编程理论知识的基础上再学习插件开发等进阶应用。在基础章节中,重点展示了过程、参数、变量、常量、数据类型、对象、属性、方法和事件等概念,并通过第7章和第8章的数十个案例印证这些理论的价值,以及调用思路。 本书从第13章开始,重点讲述开发Excel插件的知识和步骤,并提供了诸多模板供读者调用。Excel插件从大体上分为两类,其一是开源的加载宏文件,其二是受保护的加载项。 加载宏通常为xla或者xlam格式,直接在VBA的代码编译器中编写,本书不仅详细演示了开发加载宏的所有步骤和思路,还提供了让插件执行后可以撤销的方法,让用户在使用过程中不用担心覆盖重要数据,从而提升插件的品质。 加载项通常是DLL格式,使用VB或者VB.net开发,VB开发的插件无法用于64位的Office软件,因此本书为读者展示了VB.net中的Office插件开发工具VSTO的应用。 VSTO属于Visual Studio平台中的工具,本书以Visual Studio 2015为例,详细分析了VSTO与VBA代码的语法差异,并通过三个最具代表性的插件设计步骤演示利用VSTO封装代码的过程,同时也为读者提供诸多模板,让大家在实际工作中利用这些模板快速地设计出自己的插件。 本书结构 《Excel VBA与VSTO基础实战指南》大体分为五部分: 第一部分包含第1章,主要说明VBA的价值,从而提升读者对VBA的学习热情与兴趣。 第二部分最重要,详细剖析了VBA的基础理论,包含第2章到第9章。此部分内容重点展示了Excel VBA的所有基础理论,包含代码的存放位置、输入代码的方式、调用代码的方式、如何让代码运行时畅通无阻,理解什么是过程、对象、参数、事件、属性、方法、变量、常量和数据类型,并逐一讲解了工作中最有用的条件语句、循环语句和防错语句的语法,同时提供了数十个案例来加深读者对这些基础理论的理解。 第三部分包含第10章到第15章,分别介绍了通过数组优化代码,利用字典去除重复值,以及设计功能区中的菜单的思路,并提供了大量的模板。最后讲解开发通用插件,并让插件在执行过程中可以撤销,这是本书的一大特色内容。 第四部分属于VSTO的应用,也就是利用VB.net来封装VBA代码,将它打包成受保护的安装程序,从而提升插件代码的安全性和专业性。 第五部分包含第20章,本章为读者提供365个VBA思考题目,并在赠送的案例文件中提供了答案。 本书特点 相比同类书籍,本书在内容编排上具有以下特点: 1.本书对于Excel VBA的基础理论有着相当详细的讲解,包含200多页,8个章节。要学好编程必须基础理论掌握通透,否则编写三五年代码后仍然不能得心应手。基础理论是程序员十分重要的必备素质,而不应该只重实战轻理论。 2.目前国内VBA图书讲插件开发思路的书极少,而市场对插件的需求却极大,开发插件有较广阔的前景。本书不仅用较大的篇幅讲述插件开发相关的知识,而且加入了执行插件命令后可以撤销的设计思路,这在VBA图书市场上绝无仅有。 3.本书除VBA外,还提供VSTO知识,采用VB.net语法编写。 VSTO比VBA更强大,能实现的功能也更多,同时还更安全。本书详细罗列了VBA与VSTO在代码上的差异,然后演示修改VBA代码,使其符合VB.net语法规则的基本思路,从而让读者快速学会利用VSTO开发Excel插件。掌握本书第16章到第19章的知识,仅需半个月即可学会VSTO,不需要像学习C#那样,耗费半年甚到一两年时间。 4.本书在每章末尾会提供5个思考题,最后一章再追加365个思考题,一共460个。期望读者通过这些题目扩展知识面,同时能加深对书中理论知识的印象。 5.本书提供读者交流群,读者购书后可以加群下载案例文件,同时可以在群里与作者交流,加快学习进度。 案例文件 本书不提供光盘,请加入交流群下载,也可以到电子工业出版的博文视点官方网站下载,网址如下:http://www.broadview.com.cn/32003。 本书作者 本书由罗刚君编写,罗刚君是多个大型论坛的版主,有着丰富的VBA程序设计经验。 作者近10年来已出版15部关于Excel的图书(含本书),分别是《Excel 2007 VBA范例大全》、《Excel 2007技法与行业应用实例精讲》、《Excel 2007 VBA开发技术大全》、《Excel 2007函数案例速查宝典》、《Excel VBA程序开发自学宝典》、《Excel 2010 VBA编程与实践》、《Excel 2010函数与图表速查手册》、《Excel VBA程序开发自学宝典(第2版)》、《Excel函数、图表与透视表从入门到精通》、《来吧!带你玩转Excel VBA》、《Excel VBA程序开发自学宝典(第3版)》、《Excel 2013函数案例自学宝典(实战版)》、《Excel 2013 VBA编程与实践》、《Excel 2016实用技巧自学宝典》、《Excel VBA与VSTO基础实战指南》。 读者在阅读本书过程中可以在群里随时与作者沟通,或者反馈阅读过程中遇到的问题,同时也可以向作者提出有关VBA或者VSTO的建议,作者会利用业余时间及时回复。
目 录 第1章 自动化操作 1 1.1 自动化操作的价值 1 1.1.1 自动化操作的必要性 1 1.1.2 实现自动化操作的两个途径 3 1.2 利用宏简化日常工作 3 1.2.1 三分钟学会录制宏 4 1.2.2 执行宏的方法 7 1.2.3 两种方法读懂宏代码 7 1.2.4 宏的优缺点分析 10 1.2.5 如何发挥宏的长处 11 1.3 使用VBA强化Excel功能 12 1.3.1 追根溯源:什么是VBA 12 1.3.2 知己知彼:解析VBA的优缺点 13 1.3.3 窥斑见豹:从一个案例初识VBA 13 1.4 Excel VBA的发展前景 15 1.4.1 简化工作 15 1.4.2 开拓专业 16 1.5 课后思考 16 第2章 代码应用基础 17 2.1 区分VBE代码窗口 17 2.1.1 认识VBE窗口 17 2.1.2 最常用的代码存放区:标准模块 19 2.1.3 工作簿事件代码窗口:ThisWorkbook 23 2.1.4 工作表事件代码窗口:Sheet1 23 2.1.5 窗体代码窗口:UserForm1 24 2.1.6 创建隐藏对象的代码窗口:类模块 24 2.2 录入代码 25 2.2.1 代码的存放位置 25 2.2.2 写入代码的方式 25 2.2.3 提升代码的可读性 27 2.2.4 调用快速信息 31 2.3 四种代码执行方式 32 2.3.1 调用快捷键 32 2.3.2 单击按钮执行 33 2.3.3 自动执行 34 2.3.4 在公式中调用 35 2.4 保存代码 36 2.4.1 修改文件的保存格式 36 2.4.2 一劳永逸 37 2.5 让代码畅通无阻 37 2.5.1 调整宏的安全等级 38 2.5.2 添加受信任位置 38 2.5.3 将代码封装为加载项 39 2.6 反复调用相同代码 39 2.6.1 使用个人宏工作簿 39 2.6.2 加载宏 40 2.6.3 加载项 40 2.7 课后思考 40 第3章 从概念开始认识VBA 42 3.1 认识过程 42 3.1.1 过程的分类 42 3.1.2 Sub过程的基本语法 42 3.1.3 Sub过程的命名要求 44 3.1.4 Sub过程的调用方法与访问限制 45 3.1.5 过程的执行顺序 46 3.1.6 过程的递归 48 3.2 关于参数 49 3.2.1 参数的存在价值 49 3.2.2 过程名称中的参数 49 3.2.3 参数的赋值方式 50 3.2.4 可选参数与必选参数 52 3.2.5 代码中的参数 53 3.3 理解对象 54 3.3.1 什么是对象 54 3.3.2 对象的引用层次 55 3.4 对象的属性与方法 56 3.4.1 认识属性与方法 56 3.4.2 自动调用属性与方法 57 3.4.3 怎样才算完整的VBA语句 58 3.5 对象的事件 59 3.5.1 什么是事件 59 3.5.2 事件的存在价值 60 3.5.3 事件的分类与代码录入方式 60 3.5.4 事件的参数 62 3.6 课后思考 63 第4章 对象及其层次结构 65 4.1 查看所有对象 65 4.1.1 从对象浏览器查看对象 65 4.1.2 从帮助中调用对象的详细信息 65 4.2 对象的层次与引用方式 67 4.2.1 对象的层次 67 4.2.2 使用对象名称引用对象 67 4.2.3 使用复数形式表示对象集合 68 4.2.4 使用序号参数引用集合中的子对象 69 4.2.5 引用子对象 70 4.2.6 引用活动对象 70 4.2.7 引用父对象 71 4.2.8 利用WITH语句引用重复出现的对象 72 4.3 Range对象 74 4.3.1 Range("A1")引用方式 74 4.3.2 Cells(1,1)引用方式 76 4.3.3 [A1]引用方式 77 4.3.4 活动单元格:ActiveCell 78 4.3.5 屏幕坐标下的单元格:RangeFromPoint 79 4.3.6 选区:Selection、RangeSelection 80 4.3.7 已用区域:UsedRange 81 4.3.8 当前区域:CurrentRegion 83 4.3.9 按条件引用区域:SpecialCells 83 4.3.10 模拟End+方向键产生的单元格:End 86 4.3.11 按偏移量重置区域引用:Offset 88 4.3.12 按宽度与高度重置区域:Resize 90 4.3.13 引用多区域的合集:Union 91 4.3.14 引用多区域的交集:Intersect 92 4.4 图形对象 95 4.4.1 Shapes对象与子对象 95 4.4.2 图形对象的名称 95 4.4.3 DrawingObjects 96 4.4.4 图形对象的类别子集 97 4.5 表对象 98 4.5.1 表的合集与子对象 98 4.5.2 表对象的分类 98 4.5.3 活动表 99 4.5.4 隐藏工作表的特性 100 4.5.5 引用名字为数值的工作表的技巧 100 4.6 工作簿对象 101 4.6.1 工作簿合集与子对象 101 4.6.2 活动工作簿 101 4.6.3 关于后缀名 102 4.6.4 关于工作簿格式 103 4.7 Excel应用程序对象 103 4.7.1 Excel的顶层对象:Application 104 4.7.2 调用子对象时可以省略Application吗 104 4.7.3 不同版本的Excel之间的差异 104 4.8 课后思考 105 第5章 揭密数据类型与变量、常量 106 5.1 数据类型 106 5.1.1 区分数据类型的必要性 106 5.1.2 数据类型的分类 107 5.1.3 转换数据类型 110 5.2 定义变量 112 5.2.1 变量的用途 112 5.2.2 定义变量的方法 113 5.2.3 变量的命名规则 114 5.2.4 变量的作用域 115 5.2.5 变量的生命周期 117 5.2.6 静态变量与动态变量的分别 118 5.2.7 声明对象变量 119 5.2.8 对象变量的初始化与释放 121 5.3 定义常量 122 5.3.1 常量的用途 122 5.3.2 常量的定义方式 122 5.3.3 变量与常量的异同分析 123 5.4 课后思考 123 第6章 条件语句与循环语句 125 6.1 If语句解析 125 6.1.1 条件语句的重要性 125 6.1.2 If...Then...Else的单行模式 126 6.1.3 And、Or和Not在条件语句中的作用 127 6.1.4 案例解析:指定工作簿的最后开启日期 128 6.1.5 If...Then...Else的块形式 129 6.1.6 块形式的应用案例:创建日期批注 130 6.1.7 嵌套使用If语句 132 6.1.8 If语句的常见错误与防错之法 138 6.2 Select Case语句解析 140 6.2.1 Select Case语句的价值 140 6.2.2 Select Case基本语法 140 6.2.3 多条件应用案例 142 6.3 IIf函数 145 6.3.1 IIf函数语法解析 146 6.3.2 IIf函数案例应用:判断Excel的版本号 146 6.3.3 IIf函数的优缺点 147 6.4 For Next语句解析 147 6.4.1 循环语句的作用 147 6.4.2 For Next语句基本语法 148 6.4.3 步长值对循环结果的影响 149 6.4.4 For Next循环语句应用案例 149 6.5 For Each…Next语句解析 153 6.5.1 遍历对象集合 153 6.5.2 For Each…Next语句基本语法 153 6.5.3 For Each…Next语句应用案例:定位大于某值的单元格 154 6.6 Do Loop语句解析 156 6.6.1 Do Loop语法分析 156 6.6.2 Do Loop语法一应用 158 6.6.3 Do Loop语法二应用 161 6.6.4 Do Loop语法三应用 162 6.6.5 Do Loop语法四应用 163 6.6.6 总结三种循环语句的优缺点 166 6.7 课后思考 166 第7章 4类常见对象的应用案例 168 7.1 单元格对象 168 7.1.1 选择单元格 168 7.1.2 筛选与复制区域的值 169 7.1.3 多区域复制 171 7.1.4 选择性粘贴数据 172 7.1.5 重置已用数据区域 175 7.1.6 查找所有成绩为100的单元格 177 7.1.7 将表示平方米和立方米后面的2和3设为上标 178 7.1.8 合并相邻且相同的单元格 180 7.1.9 按行合并且保留所有数据 182 7.1.10 隔行插入行 183 7.1.11 标示选区中的重复值 184 7.2 图形对象 186 7.2.1 批量导入图片与图片名称 186 7.2.2 统一表中所有图片大小及对齐图片 189 7.2.3 插入图片到选区中 190 7.2.4 插入带图片背景的批注 192 7.3 工作表对象 194 7.3.1 显示所有隐藏的工作表 194 7.3.2 创建以本月每日日期命名的工作表 195 7.3.3 保护所有公式 196 7.3.4 批量重命名表 198 7.3.5 查找所有工作表中有循环引用的单元格 199 7.3.6 对职工表按学历排序 200 7.3.7 创建工作表目录 202 7.4 工作簿对象 204 7.4.1 打开带密码且带有自动宏的工作簿 204 7.4.2 另存工作簿且以今天的日期命名 204 7.4.3 将外部链接转换成值 205 7.4.4 关闭工作簿且不保存修改内容 206 7.4.5 定时保存且备份工作簿 207 7.4.6 重命名活动工作簿 208 7.5 课后思考 211 第8章 深入剖析VBA的各种事件 212 8.1 事件的级别与顺序 212 8.1.1 事件的级别与代码保存位置 212 8.1.2 事件的执行方式 214 8.1.3 事件的执行顺序 215 8.2 禁用与启用事件 215 8.2.1 临时关闭事件 215 8.2.2 防止事件的连锁反应 216 8.3 工作表事件详解 217 8.3.1 工作表事件列表 217 8.3.2 Change事件的特例 218 8.3.3 事件案例:激活工作表时验证访问权限 219 8.3.4 事件案例:自动标示当前行的背景 220 8.3.5 事件案例:双击单元格时选中所有相同值 222 8.3.6 事件案例:在特定区域右击单元格时产生工作表目录 223 8.3.7 事件案例:输入表达式时在右列自动返回计算结果 224 8.3.8 事件案例:单击目录时可打开隐藏的工作表 225 8.3.9 事件案例:实时保护已录入数据的单元格 226 8.3.10 事件案例:在状态栏显示当前科目的不及格人数 227 8.3.11 事件案例:通过数据有效性的下拉列表调用对应的图片 228 8.4 工作簿事件详解 229 8.4.1 工作簿事件列表 230 8.4.2 事件案例:记录工作簿打开次数 231 8.4.3 事件案例:显示活动工作表中的产量达标率 232 8.4.4 事件案例:打印数据前检查资料是否填写完整 234 8.4.5 事件案例:保存工作簿时更新工作表目录 235 8.4.6 事件案例:新建工作表时调用模板格式 236 8.4.7 事件案例:禁止修改总表名称 237 8.4.8 事件案例:新建图表时自动设置为阴影、圆角 238 8.5 应用程序级事件详解 239 8.5.1 应用程序与类 239 8.5.2 事件案例:打开任意工作簿时创建工作表目录 239 8.5.3 事件案例:新建工作簿时自动保存 241 8.6 按时间执行代码 242 8.6.1 OnKey方法的语法分析 243 8.6.2 创建计划任务 243 8.7 课后思考 244 第9章 处理代码错误 245 9.1 代码错误类型分析 245 9.1.1 版本问题 245 9.1.2 参数赋值不当 245 9.1.3 变量定义不准确 247 9.1.4 对象不存在 247 9.2 错误处理语句 248 9.2.1 详解Err对象 249 9.2.2 Error函数详解 250 9.2.3 On Error Resume Next语句 250 9.2.4 On Error GoTo Line语句 252 9.2.5 On Error GoTo 0语句 254 9.2.6 Gosub...Return语句 254 9.3 案例应用 258 9.3.1 处理错误的常规思路 258 9.3.2 案例应用:按条件定位单元格 259 9.3.3 案例应用:根据选区的文件名批量导入图片 262 9.3.4 案例应用:一键屏蔽错误值 264 9.4 课后思考 265 第10章 使用数组提升程序效率 267 10.1 基本概念 267 10.1.1 何为数组 267 10.1.2 数组的特点 267 10.1.3 一维数组 268 10.1.4 二维数组 270 10.1.5 数组的参数 271 10.1.6 声明数组变量 272 10.1.7 动态数组与静态数组的分别 275 10.1.8 释放动态数组的存储空间 280 10.2 数组函数 281 10.2.1 用函数创建数组 281 10.2.2 获取数组元素 282 10.2.3 判断变量是否为数组 283 10.2.4 转置数组 283 10.2.5 获取数组的上标与下标 285 10.2.6 转换文本与数组 286 10.2.7 筛选数组 288 10.3 案例分析 289 10.3.1 将指定区域的单词统一为首字母大写 289 10.3.2 罗列不及格学生姓名、科目和成绩 290 10.3.3 将字符串合并到区域 292 10.3.4 将职员表按学历拆分成多个工作表 294 10.3.5 将选区的数据在文本与数值间互换 297 10.3.6 获取两列数据的相同项 298 10.3.7 罗列至少三科不及格的学生姓名 300 10.4 课后思考 302 第11章 集合与字典的应用 303 11.1 Collection:集合 303 11.1.1 集合的特性 303 11.1.2 集合的语法 304 11.1.3 使用集合获取区域中的不重复值 307 11.1.4 罗列B列重复出现的身份证号码 308 11.2 Dictionary:字典 310 11.2.1 字典对象的前期绑定和后期绑定 310 11.2.2 字典的特点 312 11.2.3 字典的属性与方法 312 11.2.4 获取选区中的唯一值 317 11.2.5 对采购表分类求和 318 11.2.6 对采购表分类计数 319 11.2.7 对产量表按组别和产品分类统计 320 11.3 课后思考 321 第12章 设计程序窗体 323 12.1 窗体与控件简介 323 12.1.1 窗体的功能 323 12.1.2 创建与运行UserForm对象 325 12.1.3 使用工具箱 326 12.1.4 标签控件 329 12.1.5 文本框控件 329 12.1.6 命令控钮 329 12.1.7 复合框 330 12.1.8 列表框 330 12.1.9 复选框 331 12.1.10 选项按钮 331 12.1.11 框架 331 12.1.12 切换按钮 332 12.1.13 多页控件 333 12.1.14 滚动条 334 12.1.15 图像控件 334 12.1.16 Flash控件 334 12.2 设置属性 335 12.2.1 属性窗口的用途 335 12.2.2 设置属性的两种方式 336 12.2.3 文本框属性 338 12.2.4 命令按钮属性 341 12.2.5 复选框属性 343 12.2.6 列表框属性 345 12.2.7 复合框属性 350 12.2.8 图像控件属性 353 12.2.9 Flash控件属性 354 12.2.10 批量设置控件的属性 354 12.3 窗体与控件的事件 355 12.3.1 UserForm对象的事件 355 12.3.2 控件的事件 356 12.4 窗体应用实战 366 12.4.1 开发多工作表查询窗体 366 12.4.2 开发多工作表快速录入面板 369 12.4.3 以指定名称批量新建或复制工作表 371 12.5 课后思考 375 第13章 定义Ribbon功能区选项卡 377 13.1 功能区选项卡开发基础 377 13.1.1 Ribbon的特点 377 13.1.2 功能区的组件图示 377 13.1.3 手动定制功能区 378 13.1.4 认识Ribbon代码编辑器 378 13.1.5 获取内置按钮图标 379 13.2 Ribbon定制之语法分析 380 13.2.1 功能区代码的结构 380 13.2.2 显示与隐藏功能区:ribbon 382 13.2.3 创建新选项卡:tab 382 13.2.4 创建新组:group 384 13.2.5 创建对话框启动器:dialogBoxLauncher 385 13.2.6 在组中添加命令按钮:button 387 13.2.7 创建切换按钮:toggleButton 389 13.2.8 创建弹出式菜单:menu 390 13.2.9 创建下拉列表:dropDown 391 13.2.10 创建编辑框:editBox 393 13.2.11 锁定或隐藏内置功能 394 13.3 使用回调函数强化功能区 395 13.3.1 为什么需要使用回调函数 395 13.3.2 回调函数详解 395 13.3.3 创建1到3号才能使用的按钮 397 13.3.4 创建按下与弹起时自动切换图标的按钮 398 13.3.5 在功能区中快速查找 400 13.3.6 在组的标签处显示日期及问候语 403 13.3.7 调用大图片创建下拉菜单 404 13.4 使用模板 408 13.4.1 模板的重要性 408 13.4.2 模板的使用方法 408 13.4.3 制作两个模板 408 13.5 课后思考 412 第14章 开发通用插件 413 14.1 插件的分类 413 14.1.1 什么是插件 413 14.1.2 插件的分类 413 14.1.3 开发插件和编写普通代码的分别 414 14.2 漫谈加载宏 414 14.2.1 加载宏工作簿的特点 414 14.2.2 加载宏管理器 415 14.2.3 加载宏的使用方法 416 14.2.4 加载宏的便利性 417 14.3 制作工作表批量重命名插件 417 14.3.1 开发通用插件的基本步骤 417 14.3.2 罗列插件需求 417 14.3.3 设计插件窗体 418 14.3.4 编写代码 419 14.3.5 创建菜单与设置快捷键 422 14.3.6 安装并测试功能 422 14.4 课后思考 425 第15章 让VBA代码也能撤销 426 15.1 突破撤销限制 426 15.1.1 VBA命令的撤销限制 426 15.1.2 设计可以撤销的Sub过程的思路与步骤 427 15.2 设计可撤销的插件 428 15.2.1 编写插件 428 15.2.2 为插件添加撤销功能 431 15.3 课后思考 436 第16章 使用VSTO设计插件的基本步骤 437 16.1 安装Visual Studio 2015 437 16.1.1 VSTO对于Excel用户的意义 437 16.1.2 Visual Studio版本介绍 438 16.1.3 安装Visual Studio 2015 438 16.2 Excel插件开发流程 440 16.2.1 创建项目 440 16.2.2 设计功能区 441 16.2.3 写入Sub过程 442 16.2.4 生成DLL插件 443 16.3 将插件打包成安装程序 444 16.3.1 Inno Setup软件介绍 444 16.3.2 打包插件安装程序 444 16.3.3 安装插件 447 16.4 课后思考 449 第17章 VSTO与VBA的差异 450 17.1 变量、常量与数据类型 450 17.1.1 数据类型 450 17.1.2 变量 451 17.1.3 常量 452 17.2 函数 452 17.2.1 调用方式不同 453 17.2.2 函数差异 453 17.3 数组 454 17.3.1 原本功能的差异 454 17.3.2 新增功能 455 17.4 窗体 455 17.4.1 名称变化 455 17.4.2 调用方式变化 456 17.4.3 功能变化 458 17.5 字典与正则表达式 459 17.5.1 字典 459 17.5.2 正则表达式 459 17.6 菜单与功能区 460 17.6.1 工作表菜单 460 17.6.2 功能区菜单 460 17.7 管理文件与目录 461 17.7.1 管理文件 462 17.7.2 管理目录 462 17.8 杂项 463 17.9 课后思考 465 第18章 将VBA插件升级为VSTO插件 466 18.1 设计插件框架 466 18.1.1 VBA插件介绍 466 18.1.2 设计插件框架 467 18.2 升级Sub过程“创建工资条” 468 18.2.1 准备工作 468 18.2.2 修改代码 469 18.3 升级窗体“文件批量命名” 470 18.3.1 准备工作 471 18.3.2 修改代码 474 18.4 升级事件过程“零值控制器” 477 18.4.1 编写功能区回调过程 477 18.4.2 编写应用程序级事件过程 477 18.5 打包安装程序 478 18.5.1 制作安装程序 478 18.5.2 安装测试 479 18.6 课后思考 481 第19章 VSTO的更多高级应用 482 19.1 添加窗体状态栏 482 19.1.1 设计 482 19.1.2 测试 483 19.2 创建任务栏图标 484 19.2.1 设计 484 19.2.2 测试 486 19.3 自动发邮件 486 19.3.1 设计 486 19.3.2 测试 488 19.4 全自动合并数据 488 19.4.1 设计 489 19.4.2 测试 493 19.5 设计任务窗格 494 19.5.1 设计 494 19.5.2 测试 496 19.6 课后思考 498 第20章 365个VBA常见问题答疑 499
罗刚君:是多个大型论坛的版主,有着丰富的 VBA 程序设计经验。作者近 10 年来已出版 15 部关于 Excel 的图书(含本书),分别是《Excel 2007 VBA 范例大全》、《Excel 2007 技法与行业应用实例精讲》、《Excel 2007 VBA 开发技术大全》、《Excel 2007 函数案例速查宝典》、《Excel VBA 程序开发自学宝典》、《Excel 2010 VBA 编程与实践》、《Excel 2010函数与图表速查手册》、《Excel VBA 程序开发自学宝典(第 2 版)》、《Excel 函数、图表与透视表从入门到精通》、《来吧!带你玩转 Excel VBA》、《Excel VBA 程序开发自学宝典(第 3 版)》、《Excel2013 函数案例自学宝典(实战版)》、《Excel 2013 VBA 编程与实践》、《Excel 2016 实用技巧自学宝典》、《Excel VBA 与 VSTO 基础实战指南》。__eol__ 读者在阅读本书过程中可以在群里随时与作者沟通,或者反馈阅读过程中遇到的问题,同时也可以向作者提出有关 VBA 或者 VSTO 的建议,作者会利用业余时间及时回复。