2012年11月15日木曜日

VBAのソースコードを保守し易くするためのツール vbac

【目次】

  • まえがき
  • vbac の入手方法
  • vbac の使い方
  • vbac の仕様・注意点
  • 余談1
  • 余談2

【まえがき】

Microsoft Office製品で利用可能なVBAのコードは、ExcelやWordなどのバイナリファイルに内包される形で保存されます。このために、いわゆるバージョン管理システムでは適切に管理することができず、メンテナンス性が悪いという問題があります。
 また、バイナリファイルに内包されるために、コードの確認や微修正などの細々した作業のためにも、WordやExcelを立ち上げ、VBEを開く手間がかかります。小規模にVBAコードを書いている分には困らないのですが、コード量が増えてきた場合(*1)や、複数人に配布したものを保守する場合などにおいては、お世辞にも使い勝手が良いとは言えません。

(*1)個人的な感覚ですが、1ファイルに含まれる総コード量が2,3千行を越えると、どうにも保守面倒にってくる気がします

 この問題に対する解決策として、古くはVBAコードを用いて、バイナリファイルに含まれるVBAコードをエクスポート/インポートする方法が知られています(*2)。この方法であれば、バージョン管理システムを併用することで、コード量が増えてきた場合にも比較的楽に対応できるようになります。
  しかしながら、この方法はExcelやWordの起動が前提にあり、複数人に配布したものを保守する場合の作業性は改善されません。

(*2)参考: Excel ソースコードの管理 関するまとめ- ClockAhead 記憶の欠片

 これらの問題に対する最適解の1つとしては、スタンドアロンで、バイナリファイルからVBAコードのエクスポート/インポートが可能なプログラムが考えられます。
 このようなプログラムとしては、2012年11月現在、@igeta(*3)が開発されている vbac (vbac is not VBA compiler)があります。vbacは、それ単体で完結したスタンドアロンのプログラムであることに加え、Excel/Word/Accessのいずれにも対応しており、同種のツールの中ではダントツで完成度が高いように思います。以下では、このvbac を紹介したいと思います。

(*3) 日本国内におけるMicrosoft F# MVP であるとともに、VBAで精力的にコードを書かれている(らしい)方。VBAに限らずコーディング能力がハンパない(気がする)にも関わらず、TwitterではVBAのことを常につぶやき続けていて、ちょっとな雰囲気。