首页 > 解决方案 > 使用 Windows Server 2012 时 VBA 崩溃而没有神奇的停止

问题描述

我有一个带有 VBA 的 XLSM 文件,在 Windows 7 Pro 上的 Excel 2010 中制作,它在那里工作正常,但在 Windows Server 2012 中运行相同的文件,它使 Excel 2010 崩溃并出现一般错误消息

“Microsoft Excel 已停止工作”。

但是越来越奇怪了……

到目前为止我尝试了什么:

我使用 Stop 来找出代码执行在哪里工作,直到它在哪里崩溃,一遍又一遍,注释掉有效和无效的停止,添加新的停止,保存,直到我缩小了导致它崩溃的确切代码行.

它在中断模式下在那条线上崩溃,然后它没有在运行模式下在那条线上崩溃。神奇的是,根本没有改变那条线,这些变化就发生了。我唯一改变的是在之前和之后放置 Stop,然后注释掉 Stops。

好吧,显然我一定是不小心添加或删除了除 Stops 之外的代码,这导致有问题的行开始正常执行。代码执行继续并在稍后崩溃,所以我再次煞费苦心地将其缩小到一行,它再次神奇地开始正确执行该行并一直运行到最后。现在没有崩溃,只是因为添加和评论停止。随后的运行也很好。原始的备份副本仍然会使 Excel 崩溃。

虽然很神秘,但这会解决问题,除了......

Windows Server 上有大量类似的 XLSM 文件和它们的静态项目文件夹,每一个都不同,我不能对每一个都这样做,即使它确实有任何意义如何驱除鬼魂。

所以我想知道,有什么我可以用 VBA 做的,这样它就不会遇到问题吗?

到目前为止,我为此尝试了什么:

这些都没有阻止它崩溃。好像我的两个眼球集中在违规线上是唯一的解决方案,但这没有任何意义。

设计于...

Windows 7 Professional Service Pack 1 64 位 Microsoft Office Professional Plus 2010 Excel 版本:14.0.7192.5000(32 位)

关于...的问题

Windows Server 2012 标准版 Microsoft Office 标准版 2010 Excel 版本 14.0.7128.5000(32 位)

标签: excelvbawindows-7excel-2010windows-server-2012

解决方案


我现在在同一台服务器上遇到过很多次,重要的是,我在另一台服务器上多次遇到过这种情况,所以这似乎完全符合运行 MS Excel 的服务器的已知概念。 “气质”。

解决方案:

  1. 在某个任意函数的任何行中添加任何字符。
  2. 单击同一功能中的任何其他行。(如果跳过此步骤,此解决方案将失败,并且问题将保持不变。)
  3. 删除您添加的字符。
  4. 与其他需要它的任意函数重复该过程。

如何知道一个函数是否需要它?弄清楚它很费力且容易出错,但在我的情况下,我可以通过我的主 Sub 并跨步直到它崩溃。然后我可以重新启动 Excel,进入该函数并重复跨步和崩溃,深入了解每次当前函数调用的函数,直到在该函数调用分支中不再发生崩溃。

在我的例子中,没有一个幽灵错误出现在主 Sub 中,只有在调用的函数中。它各不相同,但在数千行代码中,可能有大约 5 或 10 个幽灵点。

在多年来每天使用大量的不同服务器上,这种情况从未发生过一次,但没有人能发现服务器的哪些差异可能会在一开始就阻止它发生。


推荐阅读