一个简单的C#DLL - 我怎么把它从Excel和Access,VBA,VB6? [英] A Simple C# DLL - how do I call it from Excel, Access, VBA, VB6?

查看:115
本文介绍了一个简单的C#DLL - 我怎么把它从Excel和Access,VBA,VB6?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a simple class library written in c#.

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

我的问题是我怎么能叫从Microsoft Office的Visual Basic(我认为这是VB6)?

My question is how can I call this HelloWorld function from Microsoft Office Visual Basic (which I think is VB6)?

我的第一个步骤是将DLL添加作为参考 - 但浏览和选择已编译的DLL的消息无法引用到指定的文件中添加。被抛出。

My first step was to add the DLL as a reference - but on browsing and selecting the compiled DLL the message "Can't add a reference to the specified file." was thrown.

任何人都可以点我在正确的方向,为什么/如何得到这个工作?

Can anyone point me in the right direction as to why/how to get this working?

提前感谢您!

推荐答案

您无法通过COM互操作访问静态成员。其实你的code甚至不进行编译,该方法应该是在一类。这里是你如何能做到这一点:

You can't access a static member via COM interop. In fact your code doesn't even compile, the method should be in a class. Here is how you can do it:

[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互操作。所以,你可以很快看到结果。为了你需要使用regasm另一台机器上安装的DLL。

The project properties Build tab, select Register for COM interop. So you can see the results quickly. To install the dll on another machine you need to use regasm.

要那么消耗这样的:

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

您也可以参考DLL和使用早期绑定:

You can also reference the dll and use early binding:

Dim o As TestDll.Test
Set o = New TestDll.Text
MsgBox o.HelloWorld

这篇关于一个简单的C#DLL - 我怎么把它从Excel和Access,VBA,VB6?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆