我有一个 C# Excel 插件项目“MyExcelAddIn”,它有一个公共方法 Foo() 来做一些复杂的事情。出于测试目的,加载项还定义了一个工具栏按钮,该按钮连接到 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。