-2

Excel 加载项中的Refresh按钮/方法需要通过外部 winform 应用程序调用。这是我要做的事情:

private Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
public FormMain()
{
InitializeComponent();
RefreshExcelSheet(@C:\a.xls");
} 

private bool RefreshExcelSheet(string path)
        {
           using (var wb = excel.Workbooks.Open(path).WithComCleanup())

如何单击刷新按钮或简单地调用其事件?

我正在查看这些文章,但它们使用的是 VBA,我想要一个 Winform 应用程序来打开电子表格并单击按钮:
从 VBA (Excel) 访问 VSTO 应用程序插件类型
将 VSTO 功能暴露给 VBA w/o local admin

4

2 回答 2

1

解决此问题的最简单方法是通过将现有的自定义 .net 方法公开为 COM 方法,方法是制作一个 com 可调用包装对象 (CCW)。VSTO 为您提供了一种公开 COM 自动化服务器的简单方法。

http://blogs.msdn.com/b/andreww/archive/2007/01/15/vsto-add-ins-comaddins-and-requestcomaddinautomationservice.aspx

由 OP 编辑​​: Andrew Whitechapel 更新了这篇文章,但我无法让它工作。即使使用StandardOleMarshalObject并注册 COM 互操作,我仍然会收到与本文中详述的相同的错误消息:http: //blogs.msdn.com/b/andreww/archive/2008/08/11/why-your-comaddin-object-应该从-standardolemarshalobject.asp 派生

于 2012-06-01T06:09:13.853 回答
0

如果您可以扩展 Excel 加载项,匿名类型的建议肯定是最好的方法。

如果它是第 3 方工具,仍然可以使用功能区的 IAccessible 接口来调用功能区按钮。但是,您可以预期这要复杂得多。如果您必须遵循该路径,这里有一些链接可以帮助您入门:

于 2012-06-01T09:25:44.903 回答