# Excel 2010 VBA 教育
VBA (Visual Basic For Application) 是一門由微軟開發,嵌入在桌面應用程序中執行自動化任務的腳本語言。微軟 Office 辦公軟件自然集成了 VBA 語言,使用VBA編寫的程序就叫“宏”。英文是 macro,日文念「マクロ」。

[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