如何正确的在VBA/VB中引用C#/VB.NET开发的DLL
来源:互联网 发布:南昌有没有mac专柜 编辑:程序博客网 时间:2024/05/17 06:19
原文地址: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- 如何正确的在VBA/VB中引用C#/VB.NET开发的DLL
- C# 中引用vb编写的DLL
- 如何用RegAsm.exe在开发/生产环境中注册C#/VB.NET开发的DLL
- [VB.NET]在VB.NET中为什么引用了金山词霸的xdictgrb.dll文件还是不能实现鼠标取词呢?
- Access 、Excel、Word中的VBA引用C#或VB.Net创建的DLL
- 在vb.net中编译生成,引用DLL文件的方法
- 在vb.net中编译生成,引用DLL文件的方法
- [VB.NET]vb.net 调用c写的dll问题
- C#+.NET中调用VB编写的DLL代码事例
- VB.net中调用C\C++ 的DLL
- [VB.NET]VB6写的DLL在vb.net中怎么调用啊 谢谢
- VB.NET中制作COM_DLL在VBA、VB中调用
- 如何在VB中调用VC编写的DLL
- 再谈在VB中调用VC++开发的DLL
- 再谈在VB中调用VC++开发的DLL
- 再谈在VB中调用VC++开发的DLL
- 再谈在VB中调用VC++开发的DLL
- 在vb,vc中调用vb编写的DLL
- Going Deeper into Regression Analysis with Assumptions, Plots & Solutions
- TCP/IP的开肠破肚(4)
- HDU
- JQuery学习系列基础教程
- PDF.JS的基本使用
- 如何正确的在VBA/VB中引用C#/VB.NET开发的DLL
- C++对象模型之内存布局三(虚继承)
- android:layout_marginEnd隐藏的坑
- HQL详细用法
- mac安装pytest
- 没有网线接口的MacBook电脑怎么连接有线网络?USB外置网卡来帮忙
- 鸡蛋究竟宜不宜生吃?这个问题居然需要超级计算机来算?
- Faster-RCNN_TF代码解读1:train-net.py
- proc_open(): fork failed errors