【发布时间】:2015-11-12 22:13:51
【问题描述】:
我正在尝试创建一个简单的 VB6 ActiveX exe 并从 Excel 中调用它。
在 VB6 中,我使用所有默认设置创建了一个名为 BigTrev 的 ActiveX DLL 项目。
我用一个不包含代码的方法创建了一个名为 Trev 的 MultiUse 类
Public Sub HelloWorld()
End Sub
我制作了一个 DLL 并从命令行注册它(VB6 也为我注册了它,但我还是使用 cmd 完成了它)。
然后在 Excel 中,我在新工作簿中创建对我的 DLL 的引用。它显然已经注册,因为 Intellisense 知道 Trev 和 HelloWorld。
Sub cats()
Dim derek As BigTrev.Trev
Set derek = New BigTrev.Trev
derek.HelloWorld
End Sub
它在 Excel 中编译,当我单步执行它时,它在第二行中失败,即 Set one。错误信息是“ActiveX 组件无法创建对象”。
为什么?多年前,当 VB6 被广泛使用时,我已经做过很多次或类似的工作,我现在使用的是 Windows 7,并且我是我的机器上的管理员。
【问题讨论】:
-
失败如何/有什么错误?
-
抱歉添加到问题中,ActiveX 组件无法创建对象
-
本机 64 位应用程序无法加载 32 位二进制文件。见here。
-
ActiveX 控件是指将加载到 Excel 的 64 位进程空间中的 DLL 或 OCX。 “ActiveX 服务器”(EXE)应该可以正常工作,因为它在自己的进程空间中运行。
-
它只是“ActiveX EXE”,很容易发现。