16

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

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

我努力了:

  1. 重启/重启
  2. 保存工作簿的副本
  3. 使用 CCleaner 清理临时文件
  4. 在线研究
  5. 检查 ActiveX 控件(使用表单控件)

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

Debug.Print ThisWorkbook.Worksheets(1).Name

会抛出运行时错误,这让我相信 Worksheet 不知何故坏了。我在工作表中添加了几个事件,包括 _Activate 和 _Change,但即使在确认后也不会触发:

Application.EnableEvents = True

我添加了一个简单的测试子如下:

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 上发生?

4

18 回答 18

10

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

  1. 将文件另存为.xlsx(无宏) - 保存时将删除所有宏;
  2. 使用宏打开源文件并将模块复制到.xlsx文件中;
  3. 将文件另存为.xlsm- 执行完全重新编译。

之后一切开始正常工作。我有 200 多张工作表和 50 多个宏的文件,在每个模块中发布评论并没有帮助,但这个解决方案有效。

于 2015-04-29T12:00:33.193 回答
5

我也为此苦苦挣扎了一段时间。它实际上是由于从 12 月开始通过 Windows Update 进行的一些 Microsoft Office 更新。它已经引起了相当多的头痛,更不用说由于这个问题而损失了数小时的生产力。

其中一项更新打破了表格,您需要按照 UHsoccer 的说明清除 Office 缓存

此外,这里的另一个答案线程: 突然出现几个 VBA 宏错误,主要是 32809 有一个链接到 MS 博客的详细信息。

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

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

我知道,没有太多的解决方案,对吧?我也不开心。

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

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

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

于 2015-01-16T17:16:35.600 回答
1

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

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

于 2015-01-19T16:15:42.197 回答
1

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

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

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

于 2015-01-12T16:18:38.257 回答
1

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

- 关闭错误对话框后,执行“ save as”制表符分隔.txt文件。点击OK查看

...仅活动工作表。

...功能未保存。

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

-关闭excel。

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

于 2015-10-21T18:07:58.603 回答
1

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

于 2017-02-03T22:30:24.900 回答
1

在我的情况下,错误发生在执行宏:Sheets("own sheet one").Select

将工作表复制到另一个具有其他名称的工作表中,即。“oso”,然后删除原来的工作表并将新的工作表重命名为“自己的工作表一”

Excel 2013

于 2017-02-20T16:14:52.537 回答
0

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

于 2015-02-19T15:38:02.697 回答
0

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

在标记错误的机器上打开应用程序。以某种方式更改 VB 代码。(我在其中一个宏中添加了一行无关紧要的注释代码)

Sheets(sheetName).Select '没有任何后果的评论

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

希望这有意义并有所帮助

授予

于 2015-01-28T01:13:42.390 回答
0

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

于 2015-02-17T22:50:16.397 回答
0

我做了以下事情并像魅力一样工作:

  1. 安装 Office 2013(我没有尝试使用 2010,但我认为它也可以)。
  2. 安装 Office 2013 SP1。
  3. 运行 Windows 更新并安装所有 Office 和 Windows 更新。
  4. 重新启动计算机。
  5. 完毕。

这在两台不同的计算机上对我有用。我希望这也适用于你的!

于 2015-06-03T17:55:52.113 回答
0

我找到了解决方案。 只需下载以下 Office 更新: https: //support.microsoft.com/en-us/kb/2920754

选择 32 位或 64 位并安装。

为我工作,希望它对你有用。

问候

于 2016-02-03T13:42:08.127 回答
0

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

于 2015-07-30T07:03:47.747 回答
0

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

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

好的,暂时删除 .exd 文件。这是一个临时的解决方法。MS 没有真正的解决方案,但重新编译代码“解决”了问题。

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

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

就这样

于 2017-09-07T15:39:47.260 回答
0

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

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

  1. 如果您的office 2010 版本是SP1,您需要先下载并安装office SP2 包。更新补丁名称为 KB2687455。

  2. 安装更新补丁 KB2965240。

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

  3. 安装更新补丁 KB2553154。

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

于 2017-02-24T03:56:50.013 回答
0

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

于 2019-01-11T22:43:49.590 回答
0

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

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

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

最后的解决方案是:

步骤1:复制带有代码的表格(不需要无代码的表格),

Step2:删除原来的工作表,

Step3:将复制的工作表重命名为原始名称,

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

于 2018-12-11T09:57:40.620 回答
-1

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

于 2015-05-06T10:42:12.667 回答