Excel-DNA を使うメリット

VBA を使うことに対して、Excel-DNA を使うことのメリットは大体こんな感じです。

  • テストが容易
  • コードの管理ができる
  • 抽象度の高いコードが書ける
  • 保守しやすい

一つずつ見ていきましょう。

テストが容易

VBA にも一応、VBAUnit などのテスティングフレームワークはあります*1
しかし、VBA の言語自体の貧弱さもあって、あまり使いやすいものはありません。
さらに、ライブラリのような形で提供されるため、ツール連携などは絶望的です。


対して、Excel-DNA では通常の dll を作るだけですので、普通にテストを書くことができます。
先ほどの組み合わせの例にも、NaturalSpec というテスティングフレームワークを使ってテストを書いています。

コードの管理ができる

VBA でも頑張ればできなくはないですが、Excel-DNA では何も頑張る必要はなく、ごく普通にコードを管理することができます。
github に公開するのも簡単ですし、コードの検索性にも優れます。


また、エディタに Visual Studio が使えるのもうれしい点です。
無限ループに陥ってもコードを失わずに済みますし、Visual Studio に搭載されたさまざまな機能が使えます*2

抽象度の高いコードが書ける

VBA では、オブジェクト型かどうかで代入を書き分ける必要があります。
高階関数も (たぶん) 使えませんし、標準では配列以外のコレクションは用意されていません。


それに対して Excel-DNA では、.NET Framework のライブラリや言語固有のライブラリが普通に使えますので、より高レベルな部分に思考を集中させることができます。

保守しやすい

VBA は小さいものでも保守が大変・・・そう思っていた時期が、俺にもありました。

先ほどの例を VBA で書いてみたものです。
なんかもう色々とひどいですよね。


ですが、ちゃんとした VBA プログラマが書くとこの通り・・・

いげ太さんマジ半端ないです。
ただ、

とのことなので、やはり大きいものになると、VBA だとうまく管理しないと破綻しそうです。


このように、開発面におけるメリットは大きいので、Excel-DNA が使える場面ではどんどん使っていきましょう!

*1:VBAUnit は既に保守されていないようです

*2:VsVim が無いとか考えられない・・・