Visual Basic 错误 32809:解决方案不起作用

Visual Basic Error 32809: Solutions not working

我正在处理包含许多 ActiveX 控件的宏密集型 Excel 文件。该文件的所有功能在我的电脑和另一台电脑上都能完美运行,但是当 Auto_Open 宏试图在其他电脑上激活 sheet 时,我收到错误 32809。

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

唯一阻止 32809 错误发生的方法是删除所有 ActiveX 控件,但如果我将现在正在运行的文件保存在我的 PC 上并尝试在不起作用的文件上打开它,错误又会出现.

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

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

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

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

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