【问题标题】:VBA trouble with active-x referenceActive-x 引用的 VBA 问题
【发布时间】:2016-05-06 22:57:38
【问题描述】:

我想为打印机编写一个控件。打印机的界面是“Weber Packaging Solutions”的“Legitronic”软件。在 vba-activex 手册中写道,实例构建如下:

后期绑定:

Dim MyLabel as Object
Set MyLabel = CreateObject("Legi32.label")

对于早期绑定:

Dim MyLabel as Legi32.label
Set MyLabel = CreateObject("Legi32.label")

我提到了接口的类型库(我的同事告诉我这是正确的参考,因为他过去也做过一个程序并且对他有用)

但每次我执行程序时都会收到运行时错误“429”:ActiveX 组件无法创建对象。

我使用带有宏 (.xlsm) 的 Microsoft Excel 工作表的 IDE

你知道这个问题或知道如何解决它吗?

提前致谢!

【问题讨论】:

  • 您不需要使用CreateObject() 进行早期绑定,只需使用New 关键字即可。看起来.labelLegi32 对象的子对象或属性 - 在这种情况下,对于后期绑定,您将首先创建该对象,然后尝试访问它的属性/方法跨度>
  • 我也试过New,但是错误码是一样的

标签: excel vba printing reference controls


【解决方案1】:

我同意 flohdieter 的早期绑定。

早期绑定。 尝试设置对您尝试使用的组件的引用 (Legi32)。 如果您无法分配对该对象的引用,您可能必须使用 RegSvr32 ./somefile 在您的系统上注册它。你的同事可能已经在他的电脑上注册了这个。但你没有。 一旦你可以设置一个引用,你应该能够编译你的代码并成功使用 New - 除非组件有其他问题。

后期装订。 这是您使用 CreateObject("SomeName") 的地方。 当您创建一个组件时,您为其分配一个存储在注册表中的 Id。由于版本不同,此 ID 可能会发生变化。您可能安装了不同的版本并且正在寻找错误的名称。 我建议你做的是打开注册表并搜索“Legi32”并查看 Id 名称末尾是否有 1 或其他任何内容。

【讨论】:

  • 我已经注册了 RegSvr32(我尝试注册 Legi32.tlb),但我收到了错误消息:The module "C:\Program Files(x86)\Weber Marking Systems\Legitronic\Bin\Legi32.tlb" may not compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.
  • 啊。也许这个类似的链接可以帮助你......我认为你可能需要明确使用哪个 RegSvr32 exe。 stackoverflow.com/questions/9879418/…
猜你喜欢
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多