要注册其他计算机上,如生产环境中的电脑,您可以通过使用RegAsm.exe注册程序集。请参见另外一篇文章的详细信息。
4.编译该项目。
生成解决方案。然后进入bin文件夹。取决于您的勾选是否是调试或发布版本,你可以在Bin目录下找到的编译后的DLL和任何调试.TLB类型库文件。
在我们的例子中,它发布的路径是D:\ CSHARP \ SimpleCalc \ SimpleCalc \ BIN \
5.将生成类型库文件复制到Windows系统文件夹目录下。
Windows系统文件夹目录【C:\Windows\System32】是DLL和类型库的默认位置,让我们的类型库生成后的SimpleCalc.tlb复制到此目录下
OK至此已经生成在VBA中要调研的tld了
6.从Access 、Excel、Word 等按Ctrl+F11进入VBA 编辑器进行引用生成的类库文件。
注:我这里是创建的excel文件进行测试的,原文中用的是access文件
首先,创建一个新的 Access 数据库,打开 Visual Basic 代码编辑器。在菜单中点工具-> 引用
点击引用窗口时,单击浏览按钮。
然后点击浏览(B),打开 C:\Windows\System32文件夹目录后选择 SimpleCalc.tlb打开。
点击打开完成后,SimpleCalc将会显示在你的参照引用列表中,你需要向下移动并在参照引用列表中找到并勾选中。然后单击确定关闭引用窗口。或者你可以选择进行上移
您可以在注册表中的截图记得上面有在Codebase项一个DLL路径值。VBA将使用此注册表信息来查找调用的DLL。在我们例子中,它是D:\ CSHARP \ SimpleCalc \ SimpleCalc \ BIN \发布\ SimpleCalc.dll
7.在 VBA 代码中使用SimpleCalc生成的DLL。
若要使用 C# DLL 中的变量和方法,我们需要调用 VBA 里面的参照引用 DLL。将一个按钮添加到 Access 窗体,然后向其添加一个 click 事件。在 click 事件中我们调用在 VBA 模块中创建的 test()方法
下面是一个示例: 在VBA 调用 SimpleCalc.dll。test() 函数调用.Net DLL 通过从 Calc 类创建一个新的对象,然后调用其方法。
如果我们调试并单步调试并监视lngResult变量 ,我们将会看到,执行调用 C# DLL 内部计算后并把结果值9返回到 VBA变量中。你可以看到在即时监视窗口或鼠标移动到变量lngResult 上就会显示结果值。
Excel:
Access:
在这篇文章中,我们经历了创建.Net C# DLL,然后使用它 在VBA调用访问的步骤。它带来.Net 的力量到 Microsoft Office 应用程序。在这篇文章的局限性是 Visual Studio在我们的开发机器只自动注册了 DLL 和类型库。我们没有介绍如何将 DLL 部署到生成环境的电脑上。在这种情况下,查阅有关如何使用 Regasm.exe (程序集注册工具) 在目标机器上注册 DLL 请参另外一篇文章。注意您也可以为您的应用程序创建安装程序包和 regasm.exe 作为自定义命令添加到安装程序包中。
祝您编码愉快 !
其他文章系列:
(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
注:本文在翻译过程中,图片会与原文章有些差异,主要是我为了更好的让大家看清楚做了一个图文诠释。原文地址:http://www.geeksengine.com/article/create-dll.html 感谢原作者的文章。我正在更新我在访问VBA创建和跨越,我需要一些封装的功能在DLL中的场景来了一个应用程序。我以前用VB(Visual Basic中5和6)多年前创建的DLL。最
本文讲的是在VBA中使用DLL改善宏的攻击功能,
最近对在VBA中使用DLL的大量研究主要集中在如何将shellcode注入到当前运行的进程这一部分,本文就是基于这些研究,向大家展示在VBA中使用DLL改善宏的攻击功能。
大致的改善过程分以下2个阶段:
1.使用已经存在于磁盘上的DLL,执行regsvr32命令,
2.使用已经存在于磁盘上的DLL, 模...
原文地址:http://www.geeksengine.com/article/reference-dll.html感谢原作者的文章。
如果需要使用在C#或VB.Net创建一个DLL在Access VBA时,Excel VBA,或用于生产的机器上VB6应用程序,本文向您介绍如何注册,参考,并调用从VBA或VB编辑器中的DLL。
你已经正确安装并注册组件?
首先,你需要获取的C#/VB
' Prompt user for database location
strFile = InputBox("Enter the database file location", "Database Location")
' Set connection string
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile
' Create connection
Set cn = New ADODB.Connection
cn.Open strCon
' Create recordset
Set rs = New ADODB.Recordset
' Set SQL string
strSQL = "SELECT * FROM [Sheet1$]"
' Open recordset
rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic
' Loop through each record
Do While Not rs.EOF
' Add data to table
CurrentDb.Execute "INSERT INTO Table1 (Field1, Field2) VALUES ('" & rs!Field1 & "', '" & rs!Field2 & "')"
' Move to next record
rs.MoveNext
' Close recordset and connection
rs.Close
cn.Close
End Sub
4. 现在,您只需运行此代码即可从 Excel 将数据导入 Access。
注意:在上述代码中,您可能需要更改表名,以及要导入的字段和列的名称。