VBA 使用 Windows Server 2012 时没有神奇的 Stops 就崩溃了

VBA crashes without magical Stops when using Windows Server 2012

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

"Microsoft Excel has stopped working".

但它变得更奇怪了...

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

我使用 Stop 来找出代码执行的有效位置,直到它崩溃之前,一遍又一遍,注释掉有效和无效的停止,添加新的停止,保存,直到我缩小了确切的行导致崩溃的代码。

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

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

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

在 Windows 服务器上有大量类似的 XLSM 文件及其静态项目文件夹,每一个都不同,我不能对每一个都这样做,即使它确实有任何意义被驱魔。

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

到目前为止我为此所做的尝试:

None 的那个阻止了它崩溃。就好像我的两个眼球都盯着进攻线是唯一的解决办法,但这毫无意义。

设计于...

Windows 7 专业 服务包 1 64位 微软 Office 专业增强版 2010 Excel 版本:14.0.7192.5000(32 位)

关于...的问题

Windows 服务器 2012 标准版 微软办公标准版 2010 Excel 版本 14.0.7128.5000(32 位)

我已经 运行 在同一台服务器上多次出现这种情况,重要的是,我已经 运行 在另一台服务器上多次出现这种情况,所以这绝对是似乎符合服务器 运行ning MS Excel 是 "temperamental".

的已知概念

解决方案:

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

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

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

在多年来每天使用大量的另一台服务器上,这种情况从未发生过一次,但没有人能够发现服务器中的什么差异可能首先阻止它发生。