【问题标题】:Visual Basic Error 32809: Solutions not workingVisual Basic 错误 32809:解决方案不起作用
【发布时间】:2015-06-02 17:11:47
【问题描述】:

我正在处理一个包含许多 ActiveX 控件的大型 Excel 文件。该文件的所有功能都可以在我的 PC 和另一台 PC 上完美运行,但是当 Auto_Open 宏尝试激活其他 PC 上的工作表时,我收到错误 32809。

我知道这个问题已经在许多不同的论坛上发布过很多次,但是我发现对其他人有用的解决方案都没有对我有用。我已经尝试了以下所有可能的解决方案:

  • 从 Temp\Excel8.0 和 Temp\VBA 中删除所有 *.exd 文件
  • 禁用所有 ActiveX 控件
  • 在 PC 上打开文件不起作用并使用其他名称保存
  • 稍微修改代码,重新编译保存
  • 删除所有 ActiveX 控件并在无法正常工作的 PC 上重新创建它们

阻止 32809 错误发生的唯一方法是删除所有 ActiveX 控件,但如果我将现在正在运行的文件保存在我的 PC 上并尝试在不工作的那个上打开它,错误又回来了。

虽然删除所有控件确实停止了错误,但当我对文件进行更新时,必须在另一台 PC 上重新创建所有控件非常不方便。我愿意接受任何可能有助于解决这个极其令人沮丧的问题的建议。

【问题讨论】:

  • 您是否安装了所有 Office 更新。这有时会奏效。我有一个程序一直崩溃,直到我意识到它只是在没有安装 Office 更新的计算机上崩溃,所以......另一个选择是保存为 XLSX 文件,所以所有宏都被剥离,然后复制模块从旧文件到新的 XLSX 文件并保存为 XLSM
  • 创建自定义用户表单来替代 ActiveX...
  • Abe- 我没有安装更新,因为这些是公司 PC,我必须通过我们的 IT 部门才能在所有 50 多台受影响的计算机上安装更新。 XLSX 方法是否必须在每台计算机上单独执行?
  • Marciej- 我简要地考虑了该方法,但这会给工具带来相当大的不便,我宁愿不处理这些投诉。

标签: vba excel excel-2010


【解决方案1】:

在保存任何更改并编写例程以在打开文件时运行以重新创建所有必要的控件并使用控件重新保存文件之前,我最终从所有工作表中删除了所有 ActiveX 控件第一次在任何给定的 PC 上打开它。

在所有例程完成之前创建控件不允许调试,所以我使用Application.OnTime 命令而不是简单地调用下一个例程来解决这个问题。

【讨论】:

    【解决方案2】:

    希望这会有所帮助。我一直在处理著名的运行时错误 32809。在 VBA 中,如果某些对象没有定义,Excel VBA 运行时会提示运行时错误 32809。但现在,更多关于此运行时错误的情况不是由“未定义对象...”引起的,而是由 Microsoft 安全补丁问题引起的。该补丁使 VBA ActiveX 控件无法识别,因此 VBA 将这些有效的 ActiveX 控件视为未定义的对象。为了解决这个问题,微软发布了新的补丁来修复早期的问题。 如果您确保现有的 VBA 没有“定义的对象”或者它曾经运行良好,您可以升级您的 Microsoft 补丁。 Excel 2010 的最新版本应为 14.0.7177.5000 或更高版本。

    建议:如果产品被多种用户使用,则不要在 VBA 中包含 ActiveX 控件。这可能会导致无穷无尽的问题。任何 Windows 更新都可能影响 VBA。

    【讨论】:

    • 感谢您的信息!不过,我认为我们会坚持过去几年的工作。我们尝试不包含 ActiveX 控件,但标准表单控件不适用于我们的应用程序。我们真正需要做的是用Java重新编写工具,这样我们就可以直接与我们的数据库通信,也不必处理Excel的限制
    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2015-06-19
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多