Top > Programmingとか > Office > Office小ネタ

Officeアドイン:このへんでちょっとまとめてみる

最初に、Visual Basic for Application(VBA)/Visual Studio Tools for Office(VSTO)の選択と、アドイン/COMアドイン/マネージドアドインの違いは、まったく別の話なのでごっちゃにしないよう注意して。



で、まずVBA/VSTOの特徴と選択基準についての現時点での理解。

VBAはそれぞれのOfficeのバージョン間でほぼ互換性のあるマクロorスクリプトorプログラミング言語。
(もちろん仕様の追加や変更に伴う差異分は無理だが。)
Office内の単一アプリケーションに対する(もしくは複数のアプリケーションにまたがった)機能の作り込みに向いている。

VSTOはC#.NET/VB.NETからOffice2003をコントロールするためのツールor拡張機能。
どちらかといぅと従来の、VB6からOfficeをCOM経由でコントロールする機能に近い
ので、.NETで提供できる上から下までのソリューション(.NETの用語とはちょっと意味がずれる、どちらかといぅとプレゼン用語的な意味合いで)を実現する時に、使い勝手のいいフロントエンドを作る際にOfficeをパーツとしてより柔軟にコントロールすることを主な目的としている。んだと思う。

だから、Officeの中だけで完結する機能の追加や拡張を考えた場合には、VSTOを採用するメリットはほとんどなく、VBAで充分。てゅうか最適。
VS.NETで作り込んだアプリケーションからOfficeを制御したい場合にはVSTO。従来通りのCOM経由でのコントロールもできるとは思うが、わざわざCOMを選択する理由がない。

これはもぅ完全に棲み分けができている話で、メリット/デメリットを列挙してから「さて、どっちにしようか」なんて話ではないな。



アドイン/COMアドイン/マネージドアドインは、実は自分の中ではどーでもよくなった。
COMが付くかどぅかはCOMの採用の有無で、マネージドが付くかどぅかは.NETの採用の有無なだけだ。

たとえばExcelだけの閉じた世界でVBAで作れば、COMも.NETも関係ないのでただのアドイン。
Excel+VBAなんだけどちょろっとWordも呼び出して制御するんならCOMアドイン。
VSTOで.NET製アプリからOffice2003を制御するならマネージドアドイン。
で、そん時に(わざわざ)COM経由にしたらマネージドCOMアドイン。

だから、作った結果をどう分類するかの問題なだけであって、「俺のこれから作りたい機能はマネージドアドインにすべきか」などと悩む話ではないってことだね。



そいえば、そもそもなんでこんなにこのへんにこだわったのかといぅと。

Office2003のVBAはVisual Basic.NET for Applicationになっていて従来のVBA文法は下位互換性のためにのみ残されている、とかいぅ話だったらどぅしよぅ、と思って確認しておきたかったのだった。

Officeの中で遊ぶんなら、従来どおりVBAでおっけーってことで。
猿頁で提供してあるVBAコードも、2003でも同様に動作することは確認できているしね。

トラックバック

このエントリーのトラックバックURL:
http://salv.miscnotes.com/mt/mt-tb.cgi/123

コメントを投稿