6

安装所有最新的 Windows 更新后,我的 Excel VBA 代码在第一个模块开始时显示自动化错误。它包含一些形式以及许多 VBA 代码模块。但是,当删除表单(和相关代码)时,一切都很好。

大约一年前,在其他一些 Windows 更新之后,同样的事情发生了。当时删除 .exd 文件就可以解决问题,但当前的更新(包括 Service Pack 3)似乎有所不同。

发生了什么事,我怎样才能让表格工作?所有代码都没有改变,并且在所有以前的 windows/office 更新中都幸存下来。运行 Windows 7(在 Vista 机器上也一样)和 Office 2007。

4

11 回答 11

16

我曾经在Visual Basic 和 Crystal Reports中经常看到这一点;由于部署不当或DLL Hell

所以,我的猜测是它不是代码,而是您正在使用的一些第 3 方控件(OCX、DLL)。

检查您的引用(在 VBA IDE 中,单击工具和引用)并查看每个 DLL 指向的位置。

查看库上的任何日期是否与工作机器不同,您可能会找到罪魁祸首。


编辑

OP按照上述步骤发现了问题。

此特定问题的解决方法是取消注册 mscomctl.ocx:

regsvr32 /u mscomctl.ocx 

然后注册它:

regsvr32 mscomctl.ocx
于 2012-08-15T14:52:33.400 回答
5

同样的问题,注册mscomctl.ocx后问题完全解决!

对于 Windows 7 或 2008 - 请记住以“管理员身份”运行 cmd.exe,然后:

对于 32 位 Windows 系统:regsvr32 c:\windows\system32\mscomctl.ocx

对于 64 位 Windows 系统:regsvr32 c:\windows\syswow64\mscomctl.ocx

于 2012-08-16T09:59:59.010 回答
2

AutoCAD 的 VBA 也有同样的问题。就我而言,使用 regsvr32 注册新的 mscomctl.ocx 足以解决问题。

于 2012-08-15T22:09:36.287 回答
2

我们无法通过重新注册 mscomctl.ocx 来解决问题。但是我们通过删除调用 mscomctl.ocx 的“进度条对象表单”来解决它......我们用 application.statusbar 替换它。

于 2012-09-07T14:42:18.577 回答
2

查看http://support.microsoft.com/kb/2687441以获取可能解决此问题的更新

于 2012-11-14T15:19:35.010 回答
0

我们有同样的问题。在我们的加载项中,我们能够将问题追溯到作为 Excel.Application 的变量声明。对该对象的引用位于 Excel.exe 文件中,因此不清楚哪些文件被弄乱了。

有这个问题的机器都在今天早上(2012 年 8 月 15 日)更新了以下更新(抱歉没有发布链接,作为一个新用户,我每个帖子仅限于两个):

Microsoft Office 2007 套件的安全更新 (KB2596615)

Microsoft Office 2007 套件的安全更新 (KB2596754)

Microsoft Office 2007 套件的安全更新 (KB2596856)

Microsoft Office 2007 套件的安全更新 (KB2687441)

Microsoft Office Outlook 2007 垃圾邮件过滤器更新 (KB2687400)

Windows 恶意软件删除工具 x64 - 2012 年 8 月 (KB890830)

目前,我们在 MSDN 网站上没有找到任何可以澄清这一点的信息。我们仍在努力进一步隔离这一点。

于 2012-08-15T16:00:47.290 回答
0

我有同样的问题。在加载加载项时打开 excel 时出现未指定的错误。过去,删除 C:\Documents and Settings\%USERNAME%\Application Data\Microsoft\Forms\ 中的 *.exd 文件可以解决问题,但这次不行。
当我试图在我的插件中打开表单时,我得到了一个不同的错误,我无法打开表单。我最终回滚到更新前的昨晚,一切都恢复了。

于 2012-08-15T18:30:18.347 回答
0

今天在执行 Office 2007 Excel 更新后出现同样的问题。奇怪的是,尽管进行了更新,但一个系统没有任何问题——最新的系统。所以经过一番检查,我注意到这个无故障系统在 windows\sysWOW64 中的 MSCOMCTL.OCX 版本与其他版本不同。以下是此 activeX 大小:1,070,152 字节创建:2012 年 6 月 3 日修改:2012 年 6 月 6 日产品版本:6.01.9834 的详细信息所以我将其复制到了麻烦之一,它成功了。

此外,您可能需要检查这些应用程序扩展是否存在于 windows\sysWOW64 或 windows\system32 中以用于 32 位系统 FM20.DLL(修改日期:7/7/2011,版本 12.0.6604.1000,1.13MB)FM20ENU.DLL (修改日期:10/24/2008,版本 12.0.6413.1000,32.3KB)不知道在哪里可以下载这些。我从其他系统中蚕食了它们。

于 2012-08-15T21:31:58.067 回答
0

昨晚更新之一后,我们所有的终端服务器都出现了同样的问题。注册 mscomctl.ocx 解决了所有用户的问题。

于 2012-08-16T00:06:42.560 回答
0

取消并注册 MSCOMCTL.ocx 对我有用:

  1. 打开管理级别的命令提示符。单击开始,然后在运行命令行中键入 RUN。在 Windows Vista 和 Windows 7 上,您将看到 CMD.EXE 出现在快速搜索列表中。右键单击 CMD.EXE,然后左键单击以管理员身份运行。将打开一个黑色命令提示符。

  2. 如果在 64 位计算机上,请键入以下内容:regsvr32.exe /u C:\Windows\SysWOW64\MSCOMCTL.OCX

点击 ENTER 然后输入 regsvr32.exe C:\Windows\SysWOW64\MSCOMCTL.OCX 如果在 32 位计算机上,输入以下内容: regsvr32.exe /u C:\Windows\System32\MSCOMCTL.OCX 点击 ENTER 然后输入
regsvr32。 exe C:\Windows\System32\MSCOMCTL.OCX 执行此操作后,您的 Office 程序应该可以再次运行。

另请参阅:http: //blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2012/08/15/quot-unspecified-automation-error-quot-after-applying-ms12-060.aspx

于 2012-08-20T09:30:15.453 回答
0

枪的儿子...我重新注册了 C:\Windows\System32\MSCOMCTL.OCX 并且一切都恢复正常了。非常感谢所有指出这一点的人。

于 2012-08-27T01:30:18.900 回答