如何正确的在VBA/VB中引用C#/VB.NET开发的DLL

原文地址:http://www.geeksengine.com/article/reference-dll.html感谢原作者的文章。

如果需要使用在C#或VB.Net创建一个DLL在Access VBA时,Excel VBA,或用于生产的机器上VB6应用程序,本文向您介绍如何注册,参考,并调用从VBA或VB编辑器中的DLL。

你已经正确安装并注册组件?

首先,你需要获取的C#/VB.NETDLL文件和.TLB类型库文件。在Access 、Excel、Word中的VBA引用C#或VB.Net创建的DLL文章中已经给出SimpleCalc.dll和SimpleCalc.tlb -这两个文件。

然后,复制C#/VB.NETDLL文件(SimpleCalc.dll)和.TLB类型库文件(SimpleCalc.tlb)到C:\ WINNT \ SYSTEM32 \或C:\ WINDOWS \ SYSTEM32 \目录下, 然后C#/VB.NETDLL注册到Windows注册表中。本文展示了如何正确使用RegAsm.exe工具注册C#/VB.NETDLL。


在您的VBA程序中添加引用

首先,创建一个新的 Access、Excel等文件,打开 Visual Basic 代码编辑器。在菜单中点工具-> 引用



点击引用窗口时,单击浏览按钮。


然后点击浏览(B),打开 C:\Windows\System32文件夹目录后选择 SimpleCalc.tlb打开。



点击打开完成后,SimpleCalc将会显示在你的参照引用列表中,你需要向下移动并在参照引用列表中找到并勾选中。然后单击确定关闭引用窗口。或者你可以选择进行上移

您可以在注册表中的截图记得上面有在Codebase项一个DLL路径值。VBA将使用此注册表信息来查找调用的DLL。在我们例子中,它是D:\ CSHARP \ SimpleCalc \ SimpleCalc \ BIN \发布\ SimpleCalc.dll


从您的VBA或VB中调用C#/VB.NET写的DLL

若要在VBA/V中调用C#/VB.NET写的DLL里面的变量和方法,我们需要在VBA这个ibf添加一个按钮访问窗体,然后双击按钮添加事件。在Click事件中,我们创建调用C#/VB.Net写的DLL对象并调用它的方法做数字相加。

有两种方法可以来调用C#/VB.NET写的的DLL。见下文。

Private Sub Command0_Click()

    ''--------------------------------------------
    '' Method 1: using New keyword

    Dim lngResult As Long

    Dim objCalc As SimpleCalc.Calc
    Set objCalc = New SimpleCalc.Calc
    
    objCalc.SetNumberOne (3)
    objCalc.SetNumberTwo (6)
    
    lngResult = objCalc.Add()
        
    ''--------------------------------------------
    '' Method 2: This is another way to call the DLL by using CreateObject function.

    Dim lngResult2 As Long
    Dim objCalc2 As SimpleCalc.Calc
    Set objCalc2 = CreateObject("SimpleCalc.Calc")
    
    objCalc2.SetNumberOne (3)
    objCalc2.SetNumberTwo (6)
    
    lngResult2 = objCalc2.Add()

    ''---------------------------------------------
End Sub

首先,我们在VBA中声明的C#/VB.NET写的DLL的对象。然后,在方法1,它使用New关键字来创建对象的新实例。方法2使用CreateObject函数来创建实例。无论哪种方式,我们都会得到3 + 6 = 9的结果。就这么简单,但它确实说明了注册,引用,基于 Visual Basic COM 应用程序调用C#/VB.Net DLL整个过程。

祝您编码快乐!


其他文章系列:

(1)如何正确地创建Access或Excel中的DLL(或在任何Microsoft Office应用程序或VB6中使用)http://blog.csdn.net/kongwei521/article/details/77921436

(2)如何正确地将C#或VB.Net的DLL在开发机器或者生成环境机器中注册 http://blog.csdn.net/kongwei521/article/details/77929273

(3)如何正确地在Access VBA或Excel VBA内引用访问C#或VB.Net写的DLL http://blog.csdn.net/kongwei521/article/details/77929277

猜你喜欢

转载自blog.csdn.net/kongwei521/article/details/78019535