none
[VSTO]VBAを使用せずにVSTOソリューションの呼び出しは可能なのか? RRS feed

  • 質問

  • VSTOのフォーラムが無かったようなのでこちらで質問させていただきます。

    [環境]

    Visual Studio 2010 Professional

    .NET Framework 4.0

    Excel 2010

    VSTOで作成したExcelブックAから、同じくVSTOで作成したExcelブックBのメソッドを呼び出したいのですが可能でしょうか?

    VBAを利用する場合はブックAからブックBのVBA呼び出し→ブックBのVBAよりブックBにVSTOで作成したメソッド呼び出し

    で可能と判断しました。

    [参考サイト]

    http://blogs.msdn.com/b/saikik/archive/2008/08/29/vba-vsto-vba-vsto.aspx

    http://blogs.msdn.com/b/saikik/archive/2008/08/30/vba-vsto-vsto-vba.aspx

    ただ、セキュリティ等の運用を考えるとマクロブックを使用せずに連携できるならそれに越したことはありません。

    VBA無しで実現することは可能なのでしょうか。

    ご存知の方がいましたらご教授頂けると幸いです。

    2014年11月8日 6:11

回答

  • ご質問のブックAとブックBが、それぞれドキュメントレベルのVSTOカスタマイズであると仮定すると、MSDNライブラリの 「ドキュメント レベルのカスタマイズのアーキテクチャ」 に次の通り説明があります。

    ----------
    複数のドキュメント レベルのカスタマイズを同時に開くと、各アセンブリは異なるアプリケーション ドメインに読み込まれます。 このため、1 つのソリューションが正しく動作しない場合でも、それが原因で他のソリューションにエラーが発生することはありません。 ドキュメント レベルのカスタマイズは、1 つのアプリケーション ドメイン内の 1 つのドキュメントと連携するように設計されています。 ドキュメント間のやり取りに対応するようには設計されていません。
    ----------

    アプリケーションドメインが異なるため、ブックBの.NETメソッドをブックAから直接呼び出すことはできません。このような場合、(例えば、ブックBのVSTOソリューションでWCFエンドポイントを作成し、ブックAから接続するといった)何らかのプロセス間通信の手法で対応できると思います。

    ただし「ドキュメント間のやり取りに対応するようには設計されていません。」とも明記されていますので、プロセス間通信により何か副作用が生じたとしても、自己責任ということになると思います。この点はご留意下さい。

    ご参考になれば幸いです。

    • 回答としてマーク morisoba01 2014年11月10日 12:32
    2014年11月8日 15:51

すべての返信

  • ご質問のブックAとブックBが、それぞれドキュメントレベルのVSTOカスタマイズであると仮定すると、MSDNライブラリの 「ドキュメント レベルのカスタマイズのアーキテクチャ」 に次の通り説明があります。

    ----------
    複数のドキュメント レベルのカスタマイズを同時に開くと、各アセンブリは異なるアプリケーション ドメインに読み込まれます。 このため、1 つのソリューションが正しく動作しない場合でも、それが原因で他のソリューションにエラーが発生することはありません。 ドキュメント レベルのカスタマイズは、1 つのアプリケーション ドメイン内の 1 つのドキュメントと連携するように設計されています。 ドキュメント間のやり取りに対応するようには設計されていません。
    ----------

    アプリケーションドメインが異なるため、ブックBの.NETメソッドをブックAから直接呼び出すことはできません。このような場合、(例えば、ブックBのVSTOソリューションでWCFエンドポイントを作成し、ブックAから接続するといった)何らかのプロセス間通信の手法で対応できると思います。

    ただし「ドキュメント間のやり取りに対応するようには設計されていません。」とも明記されていますので、プロセス間通信により何か副作用が生じたとしても、自己責任ということになると思います。この点はご留意下さい。

    ご参考になれば幸いです。

    • 回答としてマーク morisoba01 2014年11月10日 12:32
    2014年11月8日 15:51
  • Alfred360様

    ご回答ありがとうございます。
    おっしゃる通り、ブックAとブックBはドキュメントレベルのカスタマイズです。

    保障されていない方式となると、採用するのは難しそうですね。
    VBAを利用した方式で運用を含めて検討したいと思います。

    ありがとうございました。
    2014年11月10日 12:26