機能的に同一のプログラムを作成する場合は、2つのパフォーマンスの比較が不思議です。私はVBAで必要としている比較関数の量があれば、アドインがより適切かもしれないと考えるようになっているプロジェクトに取り組んでいます。VSTOアドインとVBAのパフォーマンス
2
A
答えて
11
これらのプログラムが何をしているか、どのように行っているかによって異なります。
VSTO /.netはVBAより高速で、複数のスレッドで実行されるコードを書くことができます。しかしExcelはCOMであり、最終的にはすべてがSTA(シングルスレッドアパートメント)パイプラインに入る必要があり、マネージ(.net)コードはCOM Interopを介してCOMと通信します。つまりプライマリ相互運用アセンブリは「ネイティブ」VBAよりも低速です。言い換えれば
:
- あなたのプログラムは、多くの処理を行い、非常に少数のスプレッドシートは/は、VSTOを行く読み書きします。
- あなたのプログラムは、スプレッドシートのやりとりを多く行い、VBAになります。スプレッドシートのやりとりは、VBAができる最も遅いものですが、VSTOで行うことは、マネージコードからCOMまでマーシャリングする必要があるため、さらに苦労します。
VBAのユーザー定義関数を公開し、VBAコード呼び出しをExcelの相互運用機能アセンブリを使用せずに実際のコンピューティングを実行する参照可能なCOM可視の.net DLLにすることができます。
よく書かれたVBAコードは、同等のVSTOコードよりも優れている可能性があります。
私は、VBAで必要としている比較関数の量が多いほど、アドインが適切かもしれないと考え始めています。
VBAにもExcelアドインを書き込むことができます。関連する技術が少ないほど、お互いに話す必要が少なくなります。 - ソリューションは、最高の実行
- パフォーマンス:一日の終わりに、それはあなたの要件、環境や経験に応じて異なる適用される場合がありますが、物事の数に与えるどのくらいの重要性とのバランスが、ですか?
- 保守性 - どのソリューションを維持するのが最も簡単ですか?
- 配備 - どのソリューションが最も簡単に更新および展開できますか?
- ソースコントロールからチーム
欲求不満Foundation ServerのとのGitへのVisual Studioフック。 VBEはRubberduck(私の小さなペットプロジェクト)でGitをやることができますが、最新バージョンはまだベータ版であり、少し不安定です(C#を知っていればオープンソースなので、安定化することができます)。 - ユニットテスト - Visual Studioでは単体テストの書き込みと実行が簡単です。 VBEはRubberduckでも同じことができますが、VBEアドインがなければ、アドホックテストに頼るか、VBIDE APIへのプログラムによるアクセスを有効にし、VBAベースの単体テストフレームワークを使用する必要があります。
関連する問題
- 1. VSTOリボンとXLAアドイン
- 2. は、Excel VSTOアドイン
- 3. VSTOアドインでのSetProcessDPIAware
- 4. COMアドインとVSTOアドインの違いは何ですか?
- 5. Webアプリケーションと対話するVSTOアドイン
- 6. VSTO Outlookアドイン:Zip COMオブジェクト
- 7. VSTOアドインに署名する
- 8. VSTO Outlookアドイン用の(ClickOnce)セットアップの作成
- 9. VSTOの作成マルチアプリケーション用のアドイン
- 10. OutlookアドインVSTOのDASLの質問
- 11. VSTO ExcelアドインWPF UIウィンドウの所有者
- 12. CSLAでのOffice 2013/2016 VSTOアドイン
- 13. C#VSTO Outlookアドイン - テキスト選択イベントのデバッグ?
- 14. VSTOアドインの起動が遅い - Outlook
- 15. VSTO Excelアドインがロードされない
- 16. VS-2010 VSTOアドインをVS-2015に移行
- 17. VSTO Wordアドインをアクティブにする方法?
- 18. ネイティブコードDLL付きExcel 2016 VSTOアドイン
- 19. VSTO 2010アドインがフルスクリーンウィンドウで開かない
- 20. 使用VBAアドイン
- 21. 管理者権限のないVSTOアドインとランタイム
- 22. VBAの代わりにVB.Net for Outlook用のVSTOイベントVSTO
- 23. VSTO Outlookアドイン:Office 365グループVSTO APIでひどくサポートされているOutlookエクスプローラ
- 24. VSTOのWPFフォームOutlookアドイン - データ入力の問題
- 25. OutlookのVSTOアドインは情報ボックスのテキストを変更します
- 26. 「Outlook Today」のタスクチェックボックスのチックイベントをキャプチャする方法は? VSTOアドイン
- 27. VSTOのカスタムリボンOutlook 2010のアドインが表示されない
- 28. 特定のOutlook VSTOアドインのOnReadイベントをトリガーする方法は?
- 29. デプロイメントシステム用のOffice VSTOアドインのインストーラを作成する
- 30. Mac用Word 2016 vbaアドイン
偉大な応答。十分な情報以上。ありがとうございました。 – Flibertyjibbet
ユニットテストの詳細を知っておくとよいでしょう。 TeamCityのようなCIからテストを実行することは可能ですか? –
@AndreyKlochkov OfficeオブジェクトモデルからVSTOコードを完全に切り離した場合、はい。それ以外の場合は、CIサーバー上でOfficeを実行する必要があります。これは推奨するものではありません。たとえば、[Rubberduck](http://rubberduckvba.com)はCIサーバー上に構築されていますが、それを可能にするためにVBIDE API全体をラッピングしています。[Moq](https:// github .com/Moq/moq4/wiki/Quickstart)を使用して、これらのインターフェイスの実装を提供します。 CIサーバー上でVBAコードを実行することはできません。 –