Visual Basic错误32809:解决方案无法正常工作

时间:2015-06-02 17:11:48

标签: excel vba excel-vba excel-2010

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

我知道这个问题已经在许多不同的论坛上发布了很多次,但我找到的其他解决方案都没有为我工作。我尝试了以下所有可能的解决方案:

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

阻止32809错误发生的唯一原因是删除了所有ActiveX控件,但是如果我将现在正在运行的文件保存在我的PC上并尝试在不能正常工作的文件上打开它,则会返回错误。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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