我试图创建一个非常基本的 C# 库并通过 COM 接口公开它,以便我可以从 VBA 访问它,但在运行时它会引发错误“类不支持自动化或不支持预期的接口”
我已经阅读了所有的在线教程,并且完全按照说明完成了,所以我很困惑为什么会这样。我的基础课是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace PDCCOMTest
{
[ComVisible(true)]
public interface IPDCCOMTest
{
string SubmitRequest(string requestXML);
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(IPDCCOMTest))]
[ProgId("PDCCOMTest.PDCCOMTest")]
public class PDCCOMTest : IPDCCOMTest
{
public string SubmitRequest(string requestXML)
{
return "hello world";
}
}
}
在项目设置中,我转到应用程序-> 程序集信息-> 使程序集 COM 可见(设置为 ON)和构建-> 注册 COM 互操作(设置为 ON)
我编译并构建解决方案,然后加载 Excel 并设置一个基本的按钮宏表。在此,我转到 References 并在 COM 对象列表下,出现我的新 C# COM 程序集并检查它。然后,我可以使用 Intellisense 发现类型,并且 Intellisense 提供了 SubmitRequest 方法,因此一切正常。VBA代码如下
Private Sub CommandButton1_Click()
Dim oObj As New PDCCOMTest.PDCCOMTest
Dim text As String
test = oObj.SubmitRequest("test")
End Sub
当我然后运行工作表并单击按钮时,它会在上面 Sub 的最后一行抛出错误,即 SubmitRequest() 行
“错误 430:类不支持自动化或不支持预期的接口”
谁能建议我忽略了什么以及为什么会这样?
谢谢,詹姆斯