【问题标题】:What is causing "Automation error Unspecified error" on Worksheet_Activate?是什么导致 Worksheet_Activate 上的“自动化错误未指定错误”?
【发布时间】:2012-08-29 13:15:10
【问题描述】:

我有一个名为“日期”的工作表(对象名称是 A_Dates),需要在它被激活时进行计算(值得注意的是,这在我的个人宏工作簿中)。我经常打开工作簿,其中有太多的计算让我无法进行自动计算。所以我将自动计算设置为手动,工作表中的代码如下:

Private Sub Worksheet_Activate()
   A_Dates.Calculate
End Sub

在过去的 3 个月里,这一直运行良好,日复一日。昨天,它停止工作。它现在在声明行抛出这个错误:

Microsoft Visual Basic
Automation error
Unspecified error
[OK] [Help]

我尝试更改引用工作表的方式,使用:

Sheets("Dates").Calculate

ActiveSheet.Calculate

无济于事。我还包括错误处理:

On Error Resume Next

这并不能阻止它。我什至做到了:

Private Sub Worksheet_Activate()
   On Error GoTo headache
   Sheets("Dates").Calculate
Exit Sub

headache:
   Exit Sub
End Sub

它仍然显示。我完全不知所措。帮忙?

附加信息

我有以下参考资料,并在本工作簿的各种宏中使用所有这些参考资料:

Visual Basic 应用程序

  • Microsoft Excel 12.0 对象库
  • OLE 自动化
  • Microsoft Office 12.0 对象库
  • Microsoft 脚本运行时
  • Microsoft Forms 2.0 对象运行时
  • Microsoft HTML 对象库
  • Microsoft Internet 控件
  • Microsoft ActiveX 数据对象 2.8 库
  • Microsoft ActiveX 数据对象 Recordset 2.8 库

【问题讨论】:

  • 如果您注释掉该行并手动强制重新计算(使用 [F9]),您会收到错误吗?
  • 不,我没有。而且,一切似乎计算正确。
  • 可能错误与运行任何 VBA 有关,不一定是 Calculate 方法。如果您尝试用Debug.Print A_Dates.Name 替换A_Dates.Calculate 会怎样?这会产生错误吗?
  • 是的,它确实会产生同样的错误。 叹息我不喜欢这里的发展方向......
  • 下一步是确保您没有遗漏任何参考资料。在 VBA IDE 中,工具 --> 参考...

标签: vba error-handling excel-2007


【解决方案1】:

我们遇到了同样的问题,但有一点不同——我们有几个人都成功地使用了相同的宏,但是一个人遇到了“自动化错误”“未指定错误”的问题。 The other answer helped me 确定问题可能是由“Microsoft ProgressBar Control”引起的。 (非常感谢)

但我没有删除表单,而是在用户的 PC 上取消注册并注册了 MSCOMCTL.OCX,该 PC 出现问题,他又恢复了业务。我希望我知道是什么导致了控件的注册失败 - 这不是我第一次不得不追查此控件的问题。

注销和注册控件:

使用“提升的命令提示符”(命令提示符以管理员身份运行),发出以下命令:

 Regsvr32 /u c:\windows\SysWOW64\MSCOMCTL.OCX

 Regsvr32 c:\windows\SysWOW64\MSCOMCTL.OCX

注意:/u 取消注册 ocx

【讨论】:

  • 您好,我构建的刮刀也面临同样的问题。它适用于 74 到 86 个循环,然后突然 CreateObject("InternetExplorer.Application") 失败。我尝试了您的解决方案,但没有帮助。任何其他线索(仅供参考,我正在使用我的代码访问 Google 专利)
【解决方案2】:

每当我遇到这样的奇怪错误时,我要做的第一件事就是使用http://www.appspro.com/Utilities/CodeCleaner.htm 清理代码。这是一个免费的插件,但您也可以手动完成。只需将您的代码从模块中复制到文本文件中(或右键单击并导出)。然后把模块里的代码删掉,编译保存,把代码放回去。

当 Excel “动态”编译时,它会创建 p 代码,然后将其编译为机器代码。有时,特别是在大量编辑的情况下,p 代码会损坏。将代码复制出来、删除并复制回来会强制 Excel 重新生成 p 代码。

我已经用这种方法解决了一些非常奇怪的行为。希望它也适合你。

【讨论】:

    【解决方案3】:

    我发现了问题。我的一个表单上有一个控件,它显然停止了工作,这产生了连锁反应。

    有问题的控件是“Microsoft ProgressBar Control,版本 6.0”。我不知道它为什么停止工作,但删除表单(当然,所有对它的引用)解决了这个问题。

    【讨论】:

      【解决方案4】:

      我刚遇到这个问题,删除加载控件或添加/移动引用没有运气。

      通过为 Internet Explorer 添加 DoEvents 来修复,如下所示:

      Do
        DoEvents
      Loop Until ie.readyState = READYSTATE_COMPLETE
      

      还要注意,此值可能会在“完成”和“忙碌”之间反弹,因此此处更健壮的循环可能是有益的。

      【讨论】:

        【解决方案5】:

        我对这个问题的解决方法是在 VBA - 工具 - 参考中添加以下参考。

        Microsoft ActiveX 数据对象 2.8 库 Microsoft ActiveX 数据对象记录集 2.8 库

        【讨论】:

          【解决方案6】:

          在 Excel 停止工作之前,我看到此错误以对话框的形式弹出。我正在调试一个新脚本,它打开数百个 excel 文件并从每个文件中提取一些信息。为了解决这个问题,我添加了几个“DoEvents”命令,我的这个错误问题立即消失了。

          【讨论】:

            【解决方案7】:

            只是给其他出现“自动化错误”的人的注释。 我也有一个,发现它是整数溢出的一种特殊情况,它会在循环中中断并给出自动化错误而不是整数溢出错误。 如果您没有找到上述解决方案,请检查您是否使用了正确的尺寸。

            【讨论】:

              【解决方案8】:

              尝试将您的程序编译到较低版本的操作系统。

              【讨论】:

                【解决方案9】:

                我有两个“精确”的 VBA 代码块,一个已执行,另一个有自动化错误。我运行了调试器,它卡在下面的代码块上:

                Do While ie.readyState = READYSTATE_COMPLETE
                Application.StatusBar = "Going to StackOverflow ..."
                DoEvents
                Loop
                

                因此,我将有效的代码块和无效的代码块粘贴到单独的 Microsoft Word 文档中,然后使用“审阅/比较”功能。 它揭示了错误:

                Do While ie.readyState = READYSTATE_COMPLETE(等号 - 不正确)

                对比

                Do While ie.readyState READYSTATE_COMPLETE(双括号 - 正确)

                我强烈建议在视觉上不清楚的地方使用 Word 来提供帮助。

                是的!

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-07-22
                  • 2019-02-21
                  • 2013-08-25
                  • 1970-01-01
                  • 2019-07-10
                  • 1970-01-01
                  相关资源
                  最近更新 更多