私はKISSの原則(シンプルに保つ)とExcelユーザー向けの長年のVBAの大ファンです。ただし、VBAとVSTO(Visual Studio Tools for Office)で見つけることができるすべての記事)非常に複雑に見えます。
まず、Excelに組み込まれている非常に貧弱なIDEにうんざりしていて、新しいものを探しています。VisualStudioをIDEとして使用しているVSTOは唯一の選択肢。
それで、私はVBAとVSTOの違いを理解して、VSTOの使い方を学ぶ価値があるかどうかを知りたいと思っています。
どのツールセットを使用するかは、主に個人的な好みの問題ですが、考慮すべき点がいくつかあります。
1。パフォーマンス:ほとんどのExcel関連タスクでは、相互運用レイヤーが追加されているため、VSTOはVBAと比較して非常に低速で実行されます。
2。 UDF:VSTOはUDFをサポートしていません
3。オブジェクトモデル:ヒントを提供する.NETマクロレコーダーがないため、VBAよりもVSTOでExcelオブジェクトモデルを操作するのは困難です。
4。 IDE:VSTOを使用すると、最新のVisual StudioにアクセスできますIDE(Visual Studioライセンスを持っている場合)
5。 .Net Framework:VSTOを使用すると、非常にリッチで強力な.NETFrameworkにアクセスできます。
6。学習曲線:VB.NETはVBAとは異なる言語であり、.NETフレームワークとオブジェクトモデルの違いは、移行がそれほど単純ではないことを意味します。
7。 Visual Studio/.NETルートを使用する場合は、VSTOではなくAddinExpressまたはXLDNAを使用することをお勧めします。どちらもVSTOよりも制限が少ないです。
ExcelのVBAには、コードの編集と実行の間に高速な結果が得られるという利点があります。あなたは優れたVBAプログラマーなので、Visual Studioのスーパー機能(インテリセンス、try-catch-fanally、継承、すべての.NETオブジェクト、マルチスレッドなど)がなくても生活できます。
VSTOは、非常に優れたIDE(Visual Studio)内で作業する方法ですが、VB.NETとExcelの切り替えに多くの時間を浪費することになると思います。それほど直接的ではありません。 Excel内のVBAとして。
プログラミングの主な目的がExcelファイル内にとどまることである場合は、VBAを使用してください。本当にExcelファイルの外部で作業する必要がある場合、またはExcelファイルに依存する必要のないことを実行したい場合は、VSTOを検討できます。その上、VSTOはかなり新しく、ドキュメントは完全ではないかもしれません。
もし私があなたなら、私はVBAにとどまります。これIS私の謙虚な意見。VBAとVB.NET(VSTO)の比較を少し書きました:ここに VB.NETとVBAの違い !
この質問が最初に出されてから6年になるので、OPの時点で、これら2つのツールの比較が異なっていた可能性がありますが、実際には、既存の回答がVBAに対してどれほど有利であるかに非常に驚いています。
VBAは解釈され、完全にアプリケーション内に格納されます。ここでの利点は次のとおりです。
小さなアプリケーションとUDFの場合、VBAは機能しますfine。 Excelですばやく簡単にビルドでき、物事は「正しく機能」します。
ただし、プログラムに何らかの複雑さが含まれている場合は、VSTOを調べる価値があります。そこにある利点は次のとおりです。
VSTOはこの時点でかなりよく文書化されています:
パフォーマンスのトピックはかなりあいまいですが、以前の回答のいくつかとは対照的に、これは実際にはボトルネックに依存します。 COMの相互運用性によりオーバーヘッドが増える可能性がありますが、同時にVBA実行モデルはC#で提供できるモデルよりもはるかに低速です。特に、VSTOのプログラミングが3つ提供できるさまざまなパラダイムを考慮すると、VSTOが同様にコーディングされたVBAプログラムよりも桁違いに高速になるアプリケーションがあります。
VBAに対するあなたの回答には非常に驚いています。
数年間(主にOutlookで)VBAを使用していたので、さまざまなネガティブな側面に飽きてしまいました。VSTOの方がはるかに効率的であるため、移行します。
私は多くの否定的な点に直面しました:
開発中
展開
更新中
アドインははるかに強力であり(強力なことは、複雑なものを作成するのが簡単であることを意味します)、機能を引き出すためにリボンにボタンを追加でき、展開がより簡単です(ClickOnceを見てください)。
一般に、VBAマクロは個人的な使用のために作成されますが、VSTOアプリケーションは、ここで読むことができるように配布されるように作成されます。
複数の人に配布する予定のソリューションを開発している場合は、VBAコードをOutlook COMまたはVSTOアドイン、またはOutlook用のOfficeアドインに変換する必要があります。