複雑なことを行うパブリック メソッド Foo() を持つ C# Excel アドイン プロジェクト「MyExcelAddIn」があります。テスト目的で、このアドインは Foo() に接続されたツールバー ボタンも定義するので、これをテストして、ボタンをクリックすると Foo() が呼び出され、目的の動作を実行することを確認できます。これで問題ありません。
ここで、C# Windows フォーム プロジェクトからこのメソッドを呼び出したいと思います。Windows フォーム プロジェクトでは、Excel インスタンスを作成して表示し、VSTO アドインが実行されており、ボタンが表示され、機能することを確認できます。しかし、Windows フォーム プロジェクトからプログラムで Foo() を呼び出す方法がわかりません。私は少しググって、「MyExcelAddIn」COMAddInオブジェクトを取得するところまで行きましたが、Foo()を呼び出す方法がわかりません。
次のようになります。
// Create Excel and make it visible
Application excelApp = new Application();
excelApp.Visible = true;
// I know my VSTO add-in is running because I can see my test button
// Now get a reference to my VSTO add-in
Microsoft.Office.Core.COMAddIns comAddIns = _excelApp.COMAddIns;
object addinName = "MyExcelAddIn";
Microsoft.Office.Core.COMAddIn myAddin = comAddIns.Item(ref addinName);
// This works, but now what? How do I make a call on myAddin?
// Note that myAddin.Object is null...
そこで、Windows フォーム アプリケーションから Foo() を呼び出すために何ができるかを知りたいと思います。私は Windows フォーム アプリケーションとアドインの両方を完全に制御しており、両方 (特にアドイン) に変更を加える必要があると思いますが、その方法がわかりません。
これは VS2008 C# アプリケーションであり、Excel 2003 を使用していることに注意してください。