У меня есть проект надстройки C # Excel «MyExcelAddIn», в котором есть открытый метод Foo () для выполнения чего-то сложного. В целях тестирования надстройка также определяет кнопку на панели инструментов, которая связана с Foo (), поэтому я могу проверить это и убедиться, что нажатие кнопки вызывает Foo () и делает то, что я хочу. Это хорошо.
Теперь я хочу вызвать этот метод из проекта C # Windows Forms. В проекте Windows Forms я могу создать экземпляр Excel, сделать его видимым и убедиться, что моя надстройка VSTO работает так, как я вижу кнопку, и она работает. Но я не могу понять, как программно вызывать Foo () из проекта Windows Forms. Я немного погуглил и дошел до получения COMAddIn объекта MyExcelAddIn, но не могу понять, как вызвать 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...
Итак, я хочу знать, что я могу сделать, чтобы вызвать Foo () из моего приложения Windows Forms. Обратите внимание, что у меня есть полный контроль над приложением Windows Forms и надстройкой, и я подозреваю, что должен внести изменения в них обоих (в частности, надстройку), но я не знаю, как это сделать.
Обратите внимание, что это приложение VS2008 C #, и я использую Excel 2003.