Let's VBA

なぜVBAか?

  1. Windows環境であれば、たいていExcel入っている。

    (一般の人が使える唯一?のインタプリタ)

  2. Mac でも動く。

    (Office for Mac 2010)

  3. 業務系の職場ではユーザが多い。

    引き継ぎ相手がいる可能性が高くなる。

VBAのメリット

  • 普及
    • MS Office の普及率が高く、たいていの運用現場で利用されている。
    • MS Office がインストールされていれば、開発/実行環境は含まれている。
    • Windows系の運用現場では引き継ぎがしやすい。受け入れられやすい。
  • 自動化範囲が広い
    • 集計・分析の自動化 (Excel)
    • Web操作の自動化 (Excel & IE)
      • JavaScript の知識が無くても DOMを利用したWeb操作の自動化が容易に実現できる。(IEモジュール利用: Windowsのみ)
      • XML を扱える。
      • 実は JSON も比較的簡単に扱える(らしい、けどまだ未経験)
    • レポート作成の自動化 (Execl & PowerPoint)
      • PowerPoint での定期定型レポート提出について自動化がしやすい。
    • メール受信トリガーによる自動作業 (Outlook & Excel -> PowerPoint & IE)
      • 手でやらなくても良い作業を簡単に自動化できる。
    • 作業トリガーによるメール自動送信 (Excel -> PowerPoint + IE -> Outlook)
      • 手でやらなくても良い作業を簡単に自動化できる。
  • リリースマネジメントいらず
    • (いいか悪いかは別として;-)
    • 媒体がファイルであるため、修正や機能強化が容易にできる。
  • 情報が多い
    • Webに情報が豊富にあるため、コーディング時の参考にしやすい。

VBAのデメリット

  • ソースコードがバイナリ内部に存在し、バージョン管理が難しい。(回避可能)
  • ソースコードがバイナリ内部に存在し、ドキュメントからの参照引用が難しい。(回避可能)
  • モジュール共有と保守の同期が難しい。(回避可能)
  • 好きなエディタでソースコード編集ができない。(回避可能)
  • 正規表現が利用できない (Windowsの場合は外部ライブラリにより利用可能)
  • バージョンが変わると動かなくなることがある。
  • 媒体がファイルであるため、複数存在する場合に、どのファイルが真正のファイルかわからなくなってしまう。更に更新が分岐しやすい。
  • 媒体がファイルであるため、置き場に永続性がなく、失なわれやすい。
  • テスト駆動開発に関する知見がほとんどみあたらない。