# Excel 2010 VBA 教育
VBA (Visual Basic For Application) 是一门由微软开发,嵌入在桌面应用程序中执行自动化任务的脚本语言。微软 Office 办公软件自然集成了 VBA 语言,使用VBA编写的程序就叫“宏”。英文是 macro,日文念「マクロ」。
![教学大纲](http://upload-images.jianshu.io/upload_images/2822338-c4706db8a115646b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
[TOC]
## 一、客户对接
### 1.1 应用场景
日本人对“整齐”有很高的追求,所以经常是用 Excel 来完成各种报告书的排版。
另一方面,日本存在大量需要在客户会社中开展工作的场合,而客户会社提供的电脑,出于正版习惯和保密需要等原因,是不允许我们随意安装使用额外软件的。这就导致我们无法使用需要安装的程序,也无法使用 Java、Python 等语言开发的程序,因为需要安装额外的运行时环境(虽然可以使用绿色版配置)。但尽管是客户会社的电脑,也会提供 Excel 等办公软件,这就使得 VBA 有了用武之地。你甚至会发现,日本人在用 VBA 开发一些超越 VBA 作为一门简单语言设计初衷的惊艳工具,尽管在我们看来可以使用高级语言更好地实现,他们也不厌其烦。这里面也有日本人主张守旧、排斥新技术的原因在。
所以,Excel 就是天然的开发环境。Alt + F11 即可进入内置的 VBE (Visual Basic Editor) 编辑器。普遍采用的是 2010 版本。
### 1.2 项目周期
>[info] 仕様 - 見積 - 開発 - 納品
我方收到客户发来的「仕様書」。有必要的话,客户会同我方窗口者进行式样说明。
我方在准确理解客户需求之后,迅速研究工时预算,制作并向客户提出「見積書」,等待客户确认。
客户确认之后,我方开始组织「開発」工作。期间有不明之处,需要向客户确认。
按照约定时间开发完成后,提交成果物,即「納品」。
「見積書」的内容包括开发该项目的“业内平均预计工时”、“实际工作预计用时”和“纳期”三部分。真正的見積書其实只有“业内平均预计工时”一部分,详见[链接](http://msystm.co.jp/excel_estimate.html)。由于我们是初创企业,又是转包,所以提供后两者征得理解。同时,纳期下方要附一张当月日历,用于直观展示工期。
「纳品」包括:存有 VBA 代码的指定格式 Excel 文件、测试数据(ダミーデータ) 和 测试报告(検証書)。如客户需要,还应提交一份「時間フィードバック」,用以说明我方的实际用时。
成果物备妥后,如果客户需要,可以邀请客户观看我方现场演示该软件的使用,满意之后,再提交成果物。或者,直接提交即可。
### 1.3 注意事项
软件外包项目的开发遵循“瀑布模型”,本质上是一锤子买卖,很少有二次维护的可能。开发时尽管是为了维护考虑、但当下无用处的代码一定不要写,做了反而落埋怨,而且拖慢开发进度。「仕様書」要求之外的尽管是可以提升用户体验的代码一定不要写,做了反而落埋怨,而且拖慢开发进度。若「仕様書」注明了某些操作流程和实现方法,需 **严格按照「仕様書」的要求完成开发**,不可因为结果没差就变更实现。
“项目”毕竟有别于“产品”,项目经理与产品经理的角色也是不同的。
还有,无论什么程度的实际变更,都 **不可独断** 专行,**一定** 要向客户汇报、**确认**。对日外包有一个好处是,他们的「仕様書」极尽清晰之能事,我们根本不需要做需求分析,只需要理解「仕様書」即可;麻烦的是,我们本质上属于“军机大臣跪受笔录”,没有自由发挥的空间。
## 二、技术入门
### 2.1 变量和常量
- 基本数据类型
```
Dim ace As 数据类型
ace = value
Const ACE As 数据类型 = value
```
### 2.2 对象
#### 2.2.1 内置对象
#### 2.2.2 自定义(类模块)
数组还是作为对象看比较好,声明的时候使用 Variant 类型。
### 2.3 函数
### 2.4 GUI
### 2.5 其他
#### 2.5.1 VBE 及其配置
#### 2.5.2 代码注释
#### 2.5.3 优化小项
#### 2.5.4 文件格式
> xl = Excel
- .xl**sx**:
- .xl**sm**:
- .xl**tm**:
## 三、推荐材料
### 3.2 相关网站
- [ExcelHome](http://club.excelhome.net/forum-2-1.html)
- 谷歌搜索 + 百度/必应快照
- MSDN官方文档(VBE中F1键盘)
- [Office TANAKA](http://officetanaka.net)
### 3.1 出版书籍
追风赶月,快速通读。
- [《别怕,Excel VBA其实很简单》](http://vdisk.weibo.com/s/zHkefYQCJVOUx)
宜查不宜学。
- [《Excel VBA 程序开发自学宝典》](http://www.jb51.net/books/110151.html)
- [《Excel VBA 编程实战宝典》](http://www.jb51.net/books/432306.html)
### 3.2 视频教程
- [兰色幻想VBA从入门到进阶80集完整版](http://pan.baidu.com/s/1i37XOBb) 密码: 6rkz
- [ExcelHome](http://www.excelhome.net/video/excel/vba/list_81_1.html)
## 四、项目练习
### 4.1 词频统计
> 关键字:`Word 对象`
待续。
### 4.2 模板生成
> 关键字:`Access 数据库`
待续。
### 4.3 扫描目录
> 关键字:`递归`
待续。
## 五、拓展学习
除了 VBA 宏,VBS 脚本(类似于服务器脚本,可在Windows上直接解释运行)和 VB.NET 程序也经常收到开发需求。因为后两者同样不需要安装即可运行。一般,VB.NET 程序开发完成后是不允许进行打包的,那样就需要先安装才能使用了,与「1.1 应用场景」不符。
- [VBS](http://www.jb51.net/shouce/vbs/vtoriVBScript.htm)
- VB.NET