从VBA调用C#类

时间:2012-08-21 21:26:11

标签: c# vba

请问我可以告诉我我的代码有什么问题吗?

C#:

namespace ComMsg
{
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IM
{
    [DispId(1)]
    event M.MHandler OnMSend;
}

[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMEvents
{
    [DispId(2)]
    void sendM(M.Process status, string msg);
}

[ComSourceInterfaces(typeof(IM), typeof(IMEvents))]
[ClassInterface(ClassInterfaceType.None)]
public class Message : IM
{
    public enum Process { Error, Complete }

    public delegate void MHandler(Process status, string msg);
    public event MHandler OnMSend;

    public void sendM(Process status, string msg)
    {
        if (OnMSend != null)
            OnMSend(status, msg);
    }
}
}

我从我的VBA代码中调用它

Private WithEvents moCom     As ComMsg.M

Public Function Run() As Boolean
Set moCom = New ComMsg.M

它失败了

  

新的ComMsg.Message

我收到错误消息

  

“对象或类不支持事件集”

请帮助解决此问题。感谢

1 个答案:

答案 0 :(得分:1)

看起来你错过了很多实现COM互操作所需的设置。建议的重复链接解决了类似的问题。

对于使用COM互操作所需要包含的所有各种设置,也可能值得查看MSDN Com互操作示例here