首页 文章

Excel VBA运行时错误'32809' - 试图理解它

提问于
浏览
14

一位正在工作的同事对我们的一个宏工作簿进行了一些更改,现在在我的PC上,当我尝试运行它时,我只收到了可怕的运行时错误'32809' . 这个最新版本在他的PC和我们测试它的另一个同事的PC上运行良好 . 以前的版本在我们所有的PC上运行良好,所有这些都运行Excel 2010 .

当宏尝试选择名为“Info”的工作表索引1时,将引发错误 . 我知道Select / Activate不是必需的,但我现在正在使用这个工作簿,并试图解决为什么我一个人会收到此错误 .

我试过了:

  • 重启/重启

  • 保存工作簿的副本

  • 使用CCleaner清除临时文件

  • 在线研究

  • 检查ActiveX控件(使用表单控件)

一切都没有成功 . 然后我在即时窗口看到了一些混乱,发现即使是一个简单的:

Debug.Print ThisWorkbook.Worksheets(1).Name

会抛出运行时错误,这让我相信Workheet已经破坏了 . 我在工作表中添加了几个事件,包括_Activate和_Change,但是在确认之后,没有任何事件会触发:

Application.EnableEvents = True

我添加了一个简单的Test Sub如下:

Public Sub Test()

    Dim ws As Worksheet
    Dim sheetNum As Integer

    For Each ws In ThisWorkbook.Worksheets
        ws.Select           ' Selects all Sheets Without Error
        Debug.Print ws.Name ' Prints All Worksheet Names Fine
    Next ws

    Set ws = ThisWorkbook.Worksheets(1)
    ws.Select               ' Selects Sheet 1 Without Error

    ' Prints all but sheetNum = 1, Run-time Error 32809
    For sheetNum = 7 To 1 Step -1
        Debug.Print ThisWorkbook.Worksheets(sheetNum).Name
    Next sheetNum

    ' Run-time Error 32809
    ThisWorkbook.Worksheets(1).Select

End Sub

有没有人碰到类似的东西或知道是什么原因导致这个错误只发生在某些PC上?

18 回答

  • 0

    I have found the solution. 只需下载以下Office更新:https://support.microsoft.com/en-us/kb/2920754

    选择32位或64位并安装 .

    为我工作,希望它适合你 .

    问候

  • 1

    我遇到过类似的(几乎无法解释的)行为

    找到了删除目录C:\ Users \ username \ AppData \ Local \ Temp下的.exd文件的引用 . 在Excel8.0和VBE目录中各有一个 . 典型名称是MSForms.exd

    谷歌“Excel exd”或“KB 2553154”从我的角度来看,这是一个完全不可接受的情况,现在已经存在至少一个月了 .

  • 0

    我的解决方案(可能不适合你)

    在标记错误的计算机上打开该应用程序 . 以某种方式更改VB代码 . (我在其中一个宏中添加了一条无意义的代码注释行)

    表格(sheetName) . 选择'无意义的评论

    并保存 . 这会导致重新编译 . 关闭并重新打开 - 全部修复 .

    希望这是有道理和有帮助的

    格兰特

  • 0

    好吧,这可能很奇怪 . 无论如何我的一个同事有这个错误,我们尝试编辑VBA编译什么 . 但问题是,只需将excel文件复制到桌面即可 . 它奏效了 . Excel文件最初位于网络驱动器中 . 这很有效,这是我对这个问题的回答 .

  • 6

    我已经从工作表中删除了所有ActiveX控件,现在它可以顺利运行,没有任何错误消息 . 那是我的解决方案 .

  • 1

    我做了以下工作,并像一个魅力:

    • 安装Office 2013(我没有尝试使用2010,但我认为它也可以使用) .

    • 安装Office 2013 SP1 .

    • 运行Windows更新并安装所有Office和Windows更新 .

    • 重新启动计算机 .

    • 完成 .

    这适用于两台不同的电脑 . 我希望这也适用于你的!

  • 0

    我导出了VBA模块 - 重新保存文件,然后再次导入模块,一切都很顺利

  • 5

    在我的情况下,以下帮助:

    • 将文件另存为 .xlsx (无宏) - 保存时将删除所有宏;

    • 带有宏的开源文件和将模块复制到 .xlsx 文件;

    • 将文件另存为 .xlsm - 执行完全重新编译 .

    一切都开始正常了 . 我有200张和50个宏的文件,并在每个模块中发布评论没有帮助,但这个解决方案有效 .

  • 0

    我也一直在努力解决这个问题 . 它实际上是由于12月开始通过Windows Update进行的一些Microsoft Office更新而发生的 . 它引起了相当多的麻烦,更不用说由于这个问题导致的 生产环境 力损失数小时 .

    其中一个更新会破坏表单,您需要清除UHsoccer所述的Office缓存

    此外,另一个答案主题是:Suddenly several VBA macro errors, mostly 32809有一个指向MS博客的链接,其中包含详细信息 .

    另一个更新会导致另一个错误,如果您创建或修改其中一个表单(甚至像保存表单数据一样简单),它将更新电子表格的内部,当给予没有更新的其他人时,将导致上面的错误 .

    解决方案(如果您在同一电子表格中与其他人合作)?遗憾的是,要么让您处理的每个人都使用办公室更新,然后让他们清除办公室缓存,或者通过系统还原(或通过手动删除它们)恢复到2014年12月之前的更新 .

    我知道,解决方案不多,对吧?我也不开心 .

    就像一个背景故事,我更新了我的机器,跟上更新,我处理的其中一家公司没有 . 我正在圣诞节前拔出我的头发试图找出问题,没有任何恢复点,我终于心软了,重新格式化了 .

    现在,一个月后,公司的IT部门更新了他们的工作站 . 并且,毫不奇怪,他们也开始遇到类似的问题(更不用说当我收到他们的电子表格时,我遇到了同样的问题) .

    现在,我们都在进行相同的更新,一切都很好 .

  • -1

    我在为客户开发应用程序时遇到了这个问题 . 在我的机器上工作代码/表单等工作得很好但是当加载到客户端系统时,这个错误发生在我的应用程序中的某个点上 .

    我对此错误的解决方法是通过删除VBA模块和表单来拆除工作簿与表单和代码 . 完成此操作后,我的客户端复制了“裸”工作簿以及模块和表单 . 将表单和代码导入启用宏的工作簿使应用程序再次工作 .

  • 0

    这对我使用excel 2010并在打开 macro-enabled .xlsm 文件时收到相同的错误 .

    • 在解除错误对话框后,执行“ save as ”制表符分隔的 .txt 文件 . 单击 OK

    ...只有活动表 . ...功能未保存 .

    • 再次“ save as ”,但这次选择 macro-enabled .xlsm 格式 . (到另一个文件或覆盖原始文件并不重要,但保存为另一个感觉更安全 . )

    • 关闭excel .

    • 打开新保存的 .xlsm 文件 . 在我的情况下,错误消息去了离开,宏正在工作 .

  • 0

    似乎32809是一般错误消息 . 经过一段时间的努力,我发现我没有点击工作簿功能区下方的“启用宏”安全按钮 . 一旦我这样做,一切都很好 .

  • 0

    在我的情况下,错误发生在:Sheets(“自己的第一张”)中执行一个宏 . 选择

    将表格复制到另一个名称,即 . “oso”,然后删除原始工作表并将新工作表重命名为“自己的工作表”

    Excel 2013

  • 0

    我有同样的问题,发现这是微软漏洞的问题 .

    当我安装这些更新补丁时,它适用于我 . 您可以在www.microsoft.com上找到这些补丁 .

    • 如果您的office 2010版本是SP1,则需要先下载并安装Office SP2包 . 更新修补程序名称为KB2687455 .

    • 安装更新补丁KB2965240 .

    此安全更新可解决Microsoft Office中的漏洞,如果攻击者诱使用户在受影响的Office版本中打开或预览特制的Microsoft Excel工作簿,则可能允许远程执行代码 . 成功利用漏洞的攻击者可以获得与当前用户相同的用户权限 .

    • 安装更新补丁KB2553154 .

    Microsoft Office 2010 32位版中存在一个安全漏洞,当打开恶意修改的文件时,该漏洞可能允许任意代码运行 . 此更新可解决该漏洞 .

  • 1

    在特定工作表中添加带有VBA代码的组合框后,我遇到了这个问题 . 测试代码等完全没问题,直到我再次打开工作表 . Stackoverflow和微软有许多解决方案,但没有真正的解决方案 . 我使用excel 2010(荷兰版)和W10(从W7升级) . 我认为这个问题出现在Excel 2010中 . 在我的情况下,我在线路上出现错误,要求VBA取消保护工作表,在一个长时间没有更改的模块中 .

    好的,这就是我认为的:FM20.DLL存在安全问题,因为MS在2015年第一季度有更新 . 此更新安装了新的FM20.DLL,但语言包(FM20NLD.DLL和FM20ENU) .DLL)没有更新 . 可能,如果您不使用语言包,则不会出现此错误 . 在我看来,语言部分也应该更新(但没有可用的更新)

    好的,删除.exd文件的工作片刻 . 这是一个临时工作 . MS没有真正的解决方案,但重新编译代码'解决'了问题 .

    这就是为什么有些人说:“添加评论,问题就解决了” . 是的,添加注释会强制重新编译 .

    我同意,这仍然是一个解决方法,但不是临时工作 . 所以:1 . 检查错误存在的VBA代码的哪一部分2.添加一个强制重新编译的注释 . 3.再次保存项目

    就这样

  • 1

    我有类似的问题 . 几年来,VBA(ActiveX)代码在20台计算机上运行良好,当一位新同事加入时,问题突然浮出水面,代码在他的新笔记本电脑上不起作用,尽管Excel版本相同,它显示Run-时间错误'32809' . 我已经检查了ActiveX和Macro的所有安全设置,都是正确的 . 我做了一些实验 . 我发现在我的电脑上创建的代码不适用于我同事的新笔记本电脑 . 但是,如果我在同事的新笔记本电脑中创建代码,它可以在我的电脑上运行 . 一旦我将此代码保存在我的计算机中,它将无法再在我同事的笔记本电脑中工作 .

    通过详细检查错误,问题是我的计算机上写的所有代码,我的同事的Excel都不会识别它们 . Debug >> Compile将显示编译错误,甚至“DIM ...”无法识别 . 所有ActiveX控件,组合框,按钮......属性名称被随机分配一个新的 . 例如,我有一个按钮名称为[AddNew],一旦在我同事的新笔记本电脑中打开,它就被重新分配为[commandbutton54] . 它甚至无法识别现有的工作表名称 .

    在研究了所有解决方案之后,我发现删除“* .exd”文件不起作用(甚至清空回收站“ . ) . ”添加评论“不起作用...

    最后解决方案是:

    第1步:使用代码复制工作表(不需要代码的工作表),

    第二步:删除原始表格,

    第3步:将复制的工作表重命名为其原始名称,

    它开始起作用了 . 我发现所有ActiveX控件都在其属性中恢复了原始名称 . 它花了一分钟 . 希望它能帮助那些面临同样问题的人 . 注意:无需将文件保存到* .txt或重命名为xlsx ...

  • 0

    错误32,809:将损坏的工作表复制到新工作表并更改名称或删除损坏的工作表对我有用 . 另外,我去了腐败表的SHEET模块,并从与损坏表相关联的表单模块中删除了编码 . ALSO为我解决了这个问题 . [工作表模块可以有由特定于该工作表的事件触发的例程 . ]因此在我的情况下,我认为它是一个损坏的表单模块,而不是工作表本身的损坏数据 .

  • 0

    删除 *.exd 的所有实例为我解决了它 .

相关问题