一尘不染

一个简单的C#DLL-如何从Excel,Access,VBA,VB6调用它?

c#

我有一个用C#编写的简单类库。

using System;
namespace TestDll
{
    public class Test
    {
        public string HelloWorld
        {
            get
            {
                return "Hello World";
            }
        }
    }
}

我的问题是如何从Microsoft Office Visual Basic(我认为是VB6)中调用此HelloWorld函数?

我的第一步是添加DLL作为参考-但是在浏览和选择编译的DLL时,显示消息“无法向指定文件添加参考”。被扔了。

谁能为我指出正确的方向,说明为什么/如何使其正常工作?

在此先感谢!


阅读 543

收藏
2020-05-19

共1个答案

一尘不染

您不能通过COM互操作访问静态成员。实际上,您的代码甚至都没有编译,该方法应该在一个类中。这是您可以执行的操作:

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("01A31113-9353-44cc-A1F4-C6F1210E4B30")]  //Allocate your own GUID
public interface _Test
{
    string HelloWorld { get; }
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("E2F07CD4-CE73-4102-B35D-119362624C47")]  //Allocate your own GUID
[ProgId("TestDll.Test")]
public class Test : _Test
{
    public string HelloWorld { get { return "Hello, World! "; } }
}

在项目属性的“构建”选项卡上,选择“注册COM互操作”。这样您可以快速查看结果。要将dll安装在另一台计算机上,您需要使用regasm。

要消耗掉这个:

Dim o : Set o = CreateObject("TestDll.Test")
MsgBox o.HelloWorld

您还可以引用dll并使用早期绑定:

Dim o As TestDll.Test
Set o = New TestDll.Text
MsgBox o.HelloWorld
2020-05-19