【问题标题】:Activating Reference in VBA Excel 2010 Project Programmatically以编程方式激活 VBA Excel 2010 项目中的引用
【发布时间】:2014-12-09 22:11:01
【问题描述】:

我使用 VBA 在 Word 和 Excel 2010 版中开发了一个程序。在 VB IDE 中,我创建了一个表单,并为其添加了 ListView 控件。为此,我必须打开工具窗口,右键单击它,然后选择 ListView 作为组件。然后它可以作为组件添加。它正在使用 MSCOMCTL.OCX。它在我的设备上运行良好,但是当我在另一台计算机上执行程序时,代码在第一行引发了一个对象错误,该错误用于处理我的 ListView 控件:

运行时错误“424” 需要对象

使用 lvwLog

.ListItems.Clear

.ColumnHeaders.Clear

我公司的所有计算机都以相同的方式配置/映像。所有都使用相同版本的office,使用Windows 7 Enterprise,并且所有组件的菜单下都有ListView 6.0,只是没有被选中。如果我要进入“外国”计算机上的 IDE 并在设计中打开表单,则 ListView 不存在。您可能会猜到,当我添加它并将其命名为与我的代码对它的寻址方式相同时,这将按照设计在另一台计算机上运行。

Office 版本的 IDE 中没有可用的打包和部署向导,尽管我可能会找到它,但我的最终用户不会经历“安装”Excel 或 Word 文档的过程。如果我找不到让这个控件以编程方式注册的方法,那么我编写的这个应用程序就不会被接受。

虽然我们只有很少的 64 位版本的 Office,但如果在运行 2010 的 64 位版本的设备上打开会引发不同的错误:

系统错误:&H80040111 (-2147221231)。 ClassFactory 无法提供选定的类。这似乎与相同的错误有关,因为它在 ListView 代码的同一行上出错。不确定一旦我修复了上述问题,是否需要在 64 位版本的 Office 中重新编写它。

注意:“移动到另一台计算机”只需将 DOCM 或 XLTM 文件复制到设备并打开它。

【问题讨论】:

  • “代码失败”不是一个有用的问题描述。它以什么方式“失败”?问题计算机正在运行什么操作系统?应用程序中使用的引用不需要在另一个系统上“检查”任何内容;他们只需要安装和使用正确的程序集/库。
  • 对不起,Ken - 你是对的,我没有提供这些细节是相当草率的。我进入开发人员选项卡,发现它在第一行代码中引用的 ListView 控件对象上失败了,并且引发的错误与对象实例化失败一致(我将获取该详细信息并将其发布)。如果我在失败的设备上检查此引用,它也将继续运行,这就是我得出结论的原因。所有操作系统都是 Windows 7。所有设备的映像都相同,因此它们应该可用。我将如何验证库是否已安装且可用?
  • 您需要edit您的问题,并在人们可以看到的地方提供该信息,而不是将其隐藏在评论中。您收到的确切错误消息(最好连同导致它发生的相关代码)会有所帮助。
  • 我明白了,谢谢你的建议。当我得到这些信息时,我会按照你的建议编辑最初的帖子。
  • 如果您添加了“将其放在另一台计算机上”的方式也会有所帮助。

标签: vba excel reference ms-word


【解决方案1】:

经过进一步研究,我确定我设备上 C:\Windows\System32 子目录中的 MSCOMCTL.OCX 版本比代码失败的设备上的 OCX 更新得多。此 OCX 与我添加到表单的 ListView 组件直接相关。

一旦我复制了更高版本的 MSCOMCTL.OCX(版本 6.1.98.39,文件日期 2014 年 3 月 31 日),然后程序运行并加载 ListView 控件,没有任何错误。我要注意的另一件事是,如果将 OCX 复制到相同的系统目录并使用相同的名称,则无需重新注册 OCX。只需复制到系统文件夹并覆盖旧文件即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多