一个简单的C#DLL - 我怎么把它从Excel和Access,VBA,VB6? [英] A Simple C# DLL - how do I call it from 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屋!