我使用VBA在Word和Excel版本2010中开发了一个程序。在VB IDE中我创建了一个表单,我为其添加了一个ListView控件。为此,我必须打开工具窗口,右键单击它,然后选择ListView作为组件。然后可以将其添加为组件。它使用的是MSCOMCTL.OCX。它在我的设备上完美运行,但是当我在另一台计算机上执行该程序时,代码在第一行上引发了一个对象错误,该错误解决了我的ListView控件:
运行时错误'424' 需要对象
使用lvwLog
.ListItems.Clear< ---此处发生错误
.ColumnHeaders.Clear
我公司的所有计算机都以相同的方式配置/成像。所有人都使用相同版本的办公室,使用Windows 7企业版,并且所有人都将在组件菜单下使用ListView 6.0,但未选中。如果我要进入“外国”计算机上的IDE并在设计中打开表单,ListView就不存在了。您可能会猜到,当我添加它并将其命名与我的代码处理它的方式相同时,它将按照设计在另一台计算机上运行。
IDE的Office版本中没有可用的包和部署向导,即使我可以找到它,我的最终用户也不会完成“安装”Excel或Word文档的过程。如果我找不到一种方法来让这个控件以编程方式注册,那么我写的这个应用程序就是不会被接受。
虽然我们的64位版本的Office很少,但如果在运行64位版本的2010的设备上打开,则会引发不同的错误:
系统错误:& H80040111(-2147221231)。 ClassFactory无法提供选定的类。这似乎与相同的错误有关,因为它在ListView代码的同一行上出错。如果我需要在64位版本的Office中重新编写它,我不确定是否一旦修复了上述内容。
注意:“移动到另一台计算机”只需将DOCM或XLTM文件复制到设备并打开它。
答案 0 :(得分:0)
经过进一步研究后,我确定我设备上C:\ Windows \ System32子目录中的MSCOMCTL.OCX比代码失败的设备上的OCX版本要新得多。这个OCX与我添加到表单中的ListView组件直接相关。
复制更高版本的MSCOMCTL.OCX(版本6.1.98.39,文件日期2014年3月31日)后,程序运行并加载了ListView控件,没有任何错误。我要注意的是,如果将OCX复制到同一系统目录并使用相同名称,则无需重新注册OCX。只需复制到系统文件夹并覆盖旧文件即可。