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

我正在使用许多ActiveX控件来处理macros大的Excel文件。 文件的所有function都可以在我的电脑上正常工作,但是当Auto_Openmacros试图激活其他电脑上的工作表时,出现错误32809。

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

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

唯一阻止32809错误发生的是删除所有的ActiveX控件,但如果我保存现在正在运行的文件在我的电脑上,并尝试打开它没有工作的错误回来。

虽然删除所有控件确实会阻止错误,但是当我更新文件时,必须重新创build不同PC上的所有控件非常不方便。 我愿意接受任何可能有助于解决这个令人沮丧的问题的build议。

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

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

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

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