gpt4 book ai didi

excel - Excel VBA“自动化错误”由于2016年1月Office更新,可能是由MSCOMCTL.OCX(Microsoft Windows Common Controls 6.o(Service Pack 6)引起的

转载 作者:行者123 更新时间:2023-12-01 19:58:34 28 4
gpt4 key购买 nike



我已使用Microsoft Windows公共控件6.0(Service Pack 6)将Treeview Active X控件添加到我们的一个电子表格中,即MSCOMCTL.OCX,它位于C:\Windows\SysWOW64\

KB2881029(Microsoft Office 2010 32位版本的安全更新)(MS16-004),于2016年1月15日(或其前后)从Microsoft推出,安装了新版本的MSCOMCTL.OCX(v6.1.98.46),该版本是在2015年12月9日“创建”的,但是在更新时是“已访问”(即安装在计算机上)。

这使得工作簿对MSCOMCTL.OCX的引用为“丢失”(“失败”上的引号,因为该引用仍被打勾,但不再起作用;该工作簿由于“编译错误:不支持对象库功能”而无法编译,或者“自动化错误”)。

似乎此更新通过添加SubKey 2.0修改了以下注册表项,但将其保留为空,并且未注册新的MSCOMCTL.OCX

HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-000F8754DA1}\


解决问题需要三个步骤:


MSCOMCTL.OCX需要从提升的命令提示符下注销并重新注册,如下所示:

C:\ Windows \ system32> Regsvr32 / u C:\\ Windows \ SysWOW64 \ MSCOMCTL.OCX
C:\ Windows \ system32> Regsvr32 C:\\ Windows \ SysWOW64 \ MSCOMCTL.OCX


通过REGSVR32注册新的 MSCOMCTL.OCX(版本6.1.98.46)时,新密钥将添加到注册表中:

KEY_CLASSES_ROOT \ TypeLib \ {831FDD16-0C5C-11D2-A9FC-000F8754DA1} \ 2.2


如果已经存在一个名为2.1的SubKey,它将输入一个引用,即2.2现在是要使用的Key。但这对空的2.0 SubKey没有任何作用!

如果有一个2.0(或2.1)子键,其中没有任何内容,则使用该OCX的任何对象都将无法创建,因为它将使用2.0(resp 2.1)版本,它不能也不检查2.2。版。
通过删除错误或被取代的密钥2.0和2.1来清理注册表,仅保留最新的有效密钥2.2。可以从注册表编辑器中选择“ HKEY_CLASSES_ROOT”,“编辑/查找/MSCOMCTRL.OCX”来完成此操作。

(注意:此步骤似乎是可选步骤,因为我已经检查过仅执行步骤1和3会使工作簿再次工作。但这似乎是正确的选择)
在Excel工作簿VBA项目中,需要取消引用和重新引用Microsoft Windows Common Controls 6.0(Service Pack 6)。重新引用不仅是重新选中框的问题,还需要使用“浏览”,然后在 MSCOMCTL.OCX中选择 C:\Windows\SysWOW64\

(注意,在浏览器窗口中,您需要将文件类型从“ dll”更改为“ OCX”(或“全部”))


Daniel Alexander Karr(请参阅下面的后续文章)已经分享了他编写的脚本以自动执行第1步和第2步(请注意,需要以管理员身份运行)。

感谢Daniel和wmelonman在理解问题和找到解决方案方面的帮助。

原始帖子

与此3岁的帖子中的描述类似
(VBA Automation Errors due to Office Service Pack 3.0 caused by Forms),我的完美工作簿从一天到第二天都停止工作了...

在昨晚执行的更新列表中,以下是Office更新:


KB3114563(Microsoft Office 2010 32位版本的定义更新)
KB2881029(Microsoft Office 2010 32位版本的安全更新)
KB3114555(Microsoft Office 2010 32位版本的更新)
KB3114553(Microsoft Office 2010 32位版本的安全更新)
KB3114564(Microsoft Excel 2010 32位版本的安全更新)


还有其他更新,但不是Office专用的常规Microsoft Windows更新,希望它们与此处无关。

我的理解是,“自动化错误”是由于未从Microsoft Windows公共控件6.0(Service Pack 6)引用的我的表单之一上存在2个“附加” ActiveX控件导致项目未编译而导致的,居住在 MSCOMCTL.OCX中的 C:\Windows\SysWOW64\

不幸的是,取消注册和重新注册 MSCOMCTL.OCX as explained in the aforementioned post并不能解决问题。

我也尝试删除所有 *.exd,但是我的 C:驱动器上没有任何内容。

可能相关的其他信息:


MSCOMCTL.OCX文件的版本为 6.1.98.46,创建并最后修改于2015-12-09,但在昨天(2016-01-15)于上午3.33进行访问,即大约在更新发生的同时(最新更新为上午3:14) )。
一旦传递了初始“自动化错误”消息,我将收到一条附加消息“编译错误:不支持对象库功能”,突出显示与附加控件关联的代码行。
我已经通过创建一个空白表单并尝试添加一个表单来验证这些问题是“导致”该问题的原因。我收到错误消息“由于错误800a0011,无法完成操作”。
这些其他控件是Microsoft TreeView Control 6.0(SP6)和Microsoft ImageList Control 6(SP6)。
我可以添加Microsoft TreeView控件版本5.0(SP2)和Microsoft ImageList控件版本5.0(SP2),而不会引发错误(尽管我没有尝试使其工作)。


在昨天的Microsoft更新之后,有人知道与 MSCOMCTL.OCX相似的事故吗?那可能证实这可能是我问题的根源。

有人知道解决办法吗?

有谁知道如何向Microsoft报告此消息(如果确实是问题的根源)?

最后,对于那些感兴趣的人,有一种方法可以避免Microsoft Update弄乱ActiveX控件...不使用它们!这就是JPK为他的 TreeView做的。

最佳答案

自昨天以来,我们的Business-ERP软件Faktura-XP遇到了同样的问题,我们调查了问题并为其创建了补丁,它可能会帮助某些人:

http://www.faktura-xp.de/faktura-xp-download/update-und-patch-oeffentlich.html#toggle-id-4

在我们的案例中,TreeViewControl停止工作,但是与Automatition相同。 Microsoft将MSCOMCTL.OCX更新为版本2.2(如果密钥为
{831FDD16-0C5C-11D2-A9FC-000F8754DA1}具有空的2.1或2.0条目,通用控件将停止工作。
解:
删除密钥2.0和2.1,保留2.2,注销mscomctl.ocx并重新注册。

我们的补丁程序将执行此操作,仅此而已,不过,对我们的客户而言,它尽可能地简单,只需单击下一步并关闭。

编辑以获取更多信息:

HKEY_CLASSES_ROOT\TypeLib\{831FDD16-0C5C-11D2-A9FC-000F8754DA1}\2.2


是通过REGSVR32注册新的MSCOMCTL.OCX(版本6.1.98.46)时重新创建的

当有一个名为2.1的SubKey时,它输入一个引用,即2.2现在是要使用的Key。

如果有一个2.1子键,其中没有任何内容,则您的对象将无法创建,因为它将使用2.1版本,并且不能也没有检查2.2版本。

如有必要,请删除此密钥。

进一步的测试表明2.0 SubKey已过时,可能会导致问题。

通常,带有Microsoft Windows 7的系统都有此问题。对于我们的软件,在当前更新之后,没有人使用Windows 8.1或Windows 10称为问题。

关于excel - Excel VBA“自动化错误”由于2016年1月Office更新,可能是由MSCOMCTL.OCX(Microsoft Windows Common Controls 6.o(Service Pack 6)引起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803843/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com