Automation 如何从外部应用程序调用Excel VSTO函数?

Automation 如何从外部应用程序调用Excel VSTO函数?,automation,vsto,excel-2010,Automation,Vsto,Excel 2010,我正在寻找一种方法,可以自动从外部应用程序调用Excel VSTO文档级解决方案,类似于VBA方法,如“xlApp.Run”(“工作簿”、“宏名”)我们使用它来自动匹配VBA解决方案。由于这将是一个文档级解决方案,远程处理或Web服务不是选项。我使用的是VSTO 2010和Framework 4,目标是Excel 2007和2010版本 比如说,我有一个文档级的解决方案,它有一个名为“TestBook”的工作簿,其中包含一个基于VSTO的类“MyClass”,带有一个静态函数“GetData(s

我正在寻找一种方法,可以自动从外部应用程序调用Excel VSTO文档级解决方案,类似于VBA方法,如“xlApp.Run”(“工作簿”、“宏名”)我们使用它来自动匹配VBA解决方案。由于这将是一个文档级解决方案,远程处理或Web服务不是选项。我使用的是VSTO 2010和Framework 4,目标是Excel 2007和2010版本

比如说,我有一个文档级的解决方案,它有一个名为“TestBook”的工作簿,其中包含一个基于VSTO的类“MyClass”,带有一个静态函数“GetData(string connection)”“我正在寻找一种从外部应用程序调用GetData函数的方法。外部应用程序也将使用application.Workbooks.Open方法将解决方案本身加载到excel中

总而言之:我试图找到一种方法来获取对对象的引用(理想情况下),并在加载后从文档级解决方案调用函数。我正在尝试两种方法,如(外部应用)->(Addin)->(文档级对象),但路径(外部应用)->(文档级对象)将是理想的


如果有任何建议,我们将不胜感激。

我想你需要改变一下

调用方法的方式可能是您希望您求助于一种叫做“COM自动化插件”的东西,并以这种方式实现UDF

然后,您可以将对方法的调用作为一个公式放在该工作簿的任何部分中—Excel通过调用您的实现来升级该公式。您甚至可以让Excel重新评估它

另一个选项可能是将功能构建为所谓的RTD服务器,该服务器在工作簿中引用

有关某些信息,请参见以下链接:

  • (免费图书馆,方便发展)
  • 和(商业图书馆,以方便发展)

我想你需要换一种方式来处理这个问题

调用方法的方式可能是您希望您求助于一种叫做“COM自动化插件”的东西,并以这种方式实现UDF

然后,您可以将对方法的调用作为一个公式放在该工作簿的任何部分中—Excel通过调用您的实现来升级该公式。您甚至可以让Excel重新评估它

另一个选项可能是将功能构建为所谓的RTD服务器,该服务器在工作簿中引用

有关某些信息,请参见以下链接:

  • (免费图书馆,方便发展)
  • 和(商业图书馆,以方便发展)

如果我正确理解您的问题,您可以启动excel并使用Win32 OLE界面启动宏。此链接可能有帮助。是的。。可以从应用程序级外接程序调用带有一些警告的函数。但我希望在文档级解决方案中保留对象@Smack:该链接解释了如何在加载项中获取对和对象的引用。到达文档级对象的第二部分我仍在尝试查找。@Pynner:我正在尝试使用VSTO找到一个替代方法来消除宏。如果我正确理解您的问题,您可以启动excel并使用Win32 OLE界面启动宏。此链接可能有帮助。是的。。可以从应用程序级外接程序调用带有一些警告的函数。但我希望在文档级解决方案中保留对象@Smack:该链接解释了如何在加载项中获取对和对象的引用。到达文档级对象的第二部分我仍在尝试查找。@Pynner:我正在尝试使用VSTO找到一个替代方法来消除宏。感谢您的回复。但是,我的问题不是从工作表中调用VSTO加载项中的方法。我们可以使用ExcelDNA,并可以设法与已安装的VSTO插件进行对话。我的挑战是从外部C#项目在文档级定制中获得VSTO对象。这是谜题的最后一个关键部分,我正在寻找答案,这样我们就可以停止使用VBA了。谢谢你的回复。但是,我的问题不是从工作表中调用VSTO加载项中的方法。我们可以使用ExcelDNA,并可以设法与已安装的VSTO插件进行对话。我的挑战是从外部C#项目在文档级定制中获得VSTO对象。这是我正在寻找答案的谜题的最后一个关键部分,这样我们就可以停止使用VBA了。