ExcelVBAで統合BDD開発環境を構築したメモです。

この記事は以下の記事の続きです。

機能

開発環境というところが指す意味は、 rakeをつかってVBA開発で役立つ機能をまとめたということです。

以下のような機能が実装済み。

rake clean    # Remove any temporary products.
rake clobber  # Remove any generated file.
rake export   # export all files to specified dir
rake hide     # Hide Excel
rake import   # import All Modules
rake open     # Open or Connect Excel File
rake release  # Make releasee excel file
rake save     # Save Excel File
rake show     # Show Excel
rake spec     # Run All Tests
rake step     # Count Steps in Project
rake vbe      # Open Visual Basic Editor for Application

rakeからExcelマクロを実行する

ruby の win32oleを利用して、Excelのマクロを実行するところがこのツールのキモ。

@book.run(“ShowTotalCodeLinesInProject”)

こんな感じで、runメソッドをつかって実行する。

BDD実行エンジン

実は、VB Lite Unitが会社の環境では使えなかった。おそらく、Excelが64bit版なことが原因。 ということで、代替手段を探したところ、コンナツールを発見。

記法がRSpecに似ていて、しかも純VBAで書かれている。これを採用。

これと、VBAコードの import/export機能の組み合わせによって

  1. Emacsで編集
  2. rake spec -> Excelにコードがインポートされてテスト実行
  3. イミディエイトウィンドウで結果を確認。
  4. バグってたらデバッガでステップ実行とか
  5. テストが成功したら、rake exportしてgitにcommit

というTDDサイクルを回すことができるようになった。

Excelを起動していない状態で rake specを実行すると、 メモリ不足でテストが実行できないというバグがある。(というより解消方法がわからない) rake openしたあとに、一旦 rake saveをすることで回避できる。

フォルダ構造

src/spec/helperの3つに分けた。

生産物はsrcにいれる。テストコードは specフォルダに入れる。helperはお助けツール。

specの命名規則はxxx_specとする。 ファイル名が_specかどうかでテストコードを判定しているので。 本当はもっと設定ファイルとかで設定させたいけど、そのうち。

コード

Environment

  • Windows 7 64bit
  • Excel 2010

ツールバーから 参照設定を選択肢、以下を追加する必要あり。

  • Microsoft Visual Basic for Application Extention