【发布时间】:2019-01-25 08:20:08
【问题描述】:
我希望能够从 Excel VBA 宏调用 VSTO 插件中的函数。为了测试原理,我有以下 C# 代码。
namespace ExcelAddIn1
{
[ComVisible(true)]
public interface IThisAddIn
{
String GetText();
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
public partial class ThisAddIn : IThisAddIn
{
public String GetText()
{
return "Now is the winter of dicontent made glorius summer by this son of York";
}
}
}
我有以下 VBA 脚本
Public Sub RunTest()
Dim txt As String
Dim AddInList As Object
Dim ExcelAddIn1 As COMAddIn
Dim ThisAddIn As Object
Set ExcelAddIn1 = Application.COMAddIns("ExcelAddIn1")
txt = ExcelAddIn1.Object.GetText()
Sheets(1).Cells(2, 1).Value = txt
End Sub
ExcelAddIn1.Object = 无
https://docs.microsoft.com/en-gb/visualstudio/vsto/walkthrough-calling-code-in-a-vsto-add-in-from-vba 上的 Microsoft 演练似乎有点混乱。
我想我可能需要添加RequestComAddInAutomationService,但它不像演练中描述的那样工作。当我尝试在 RequestComAddInAutomationService 中实例化我的类的实例时,我收到错误消息,基本上告诉我需要提供 ApplicationFactory 和 IServiceProvider 作为参数。
private ThisAddIn utilities;
protected override object RequestComAddInAutomationService()
{
if (utilities == null)
utilities = new ThisAddIn();
return utilities;
}
【问题讨论】: