我正在尝试使用 Excel VBA 中的 COM 可见 .NET DLL。使用 regasm 注册 DLL 然后通过 VBA Developer 窗口中的 Tools -> References 菜单项手动添加对它的引用时,我已经成功。
但是,我现在尝试在不使用 regasm 命令的情况下注册 DLL,以便可以在任何计算机上使用 Excel 文件而无需注册 DLL。到目前为止,这是我尝试过的:
Dim JART_Instance As Object
Sub Initialize()
Dim RefPath As String, X As Byte
Const RefName = "JART xxx"
RefPath = Application.ActiveWorkbook.Path & "\JART\JART.dll"
With ActiveWorkbook.VBProject.References
For X = 1 To .Count
If .Item(X).Description Like RefName Then
.Remove .Item(X)
End If
Next
.AddFromFile (RefPath)
End With
End Sub
Sub PostInitialize()
Set JART_Instance = New JART.MainJobControl
End Sub
我添加了对“Microsoft Visual Basic for Applications Extensibility 5.3”的引用。当我运行上面的代码时,我得到“运行时错误'48':加载 DLL 时出错”。我已经使用 regasm 加载了这个 DLL 几次。我是否需要做一些事情,比如更改项目中使用的 GUID 并重试。我已经看过应该可以工作的代码示例。
如果我引用 tlb 文件而不是 .dll,我不会收到 DLL 加载错误。相反,每当我尝试使用 JART_Instance 变量说引用尚未设置时,我都会收到错误消息。即使 PostInitialize 在 Initialize 之后直接被调用,并且没有证据表明任何代码引发错误或无法运行。如果我尝试在 PostInitialize 函数中放置“停止”命令,它会告诉我“此时无法进入中断模式”。
任何想法,谢谢。