用 Visuale Basic Express 编写自定义的 Class 并编译成 Dll 文件很容易,可是如何在 Office VBA 中引用这个Dll文件呢?
自己编写一个 Class,名字叫 CHTest,只有一个方法 test
Public Sub test()
Msgbox ("This a test from VB.NET")
End Sub
编译成 Dll 文件并且在 VBA 工程中直接引用,得到错误 “Can't add a reference to the specified file”, (无法引用指定的文件)。参考网上的资料,得知不是任何DLL文件都可以在VBA中任意引用,只有符合 COM 规范的才行。如何让自己开发的DLL符合 COM 规范?
回到 VB.NET express, 打开包含 Class Test 的 Project, 再打开这个Project的属性,选定 Application 标签,然后点击 Assembly Information,在 Assembly Information 窗口中,选择 Make assembly COM-Visible,然后再重新编译这个 Class。然后我们到包含这个Project 的文件夹中找到这个 dll 文件并复制到一个合适的位置。假设这个Dll的文件名是 CHTest.dll
接下来就要使用 .NET 提供的 RegAsm.exe 程序来把这个 Dll 注册到注册表中。我的目标运行环境是 .Net 2.0, 所以我们要用 .Net 2.0 的 RegAsm.exe 程序,位置在
C:\WINNT\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe 或者