由于内存碎片,Excel 2013崩溃

自从将用户从Excel 2007升级到32位Excel 2013以来,我们的公司面临着一系列的性能和稳定性问题。

我们必须禁用某些用户的硬件加速,在控制面板\易用的访问中心中更改设置,甚至升级英特尔graphics驱动程序以提高稳定性,所有这些都具有不同程度的成功。

但是我们无法解决的一个问题是:

Excel 2013的32位版本似乎使用自己的内存pipe理器从32位内存映射到Windows 7使用的64位内存。

问题是,当这个内存变得太碎片时 ,Excel 2013将完全崩溃。

有时,在用了一个小时之后,我们发现Excel 2013试图search一块XX'Mb的内存块,如果找不到这样大小的连续内存块,就会崩溃。

作为一家金融公司,我们在这些Excel文件中有很多遗留的VBA代码,而转移到64位Excel 2013会带来更多的问题。

那么有没有人有任何想法如何解决与Excel 2013的内存问题..?

更新

一些读者(可以理解)问我们为什么不安装64位版本的Excel 2013,特别是当我们运行64位Windows 7时。

引用微软的原因是兼容性

Office 2013的64位版本

“对于大多数用户,我们推荐使用32位版本的Office,因为它与大多数其他应用程序(尤其是第三方插件)更兼容,这就是32位版本的Office 2013默认安装的原因,即使在64位位Windows操作系统“。

我们的用户不需要钟声,口哨声或时髦的animation。 他们想要一些稳定的东西,甚至是10年前写的Excel文件和VBA。 有些代码甚至使用了FORTRAN .dll计算引擎,DAO库等。

而从IT支持的angular度来看,我们只是想要一个仍然受Microsoft支持的Excel版本。

这就是为什么我们现在正在使用32位Excel 2013。

问题是,对于32位Excel 2013,这是一个令人讨厌的问题,大多数财务公司仍然大量提供旧式Excel / Access应用程序…我们可以做些什么来使这个环境更加稳定?

在我的项目中,我也遇到了这个问题之王,但是由于我用doevents关键字pipe理了代码,并且在函数和过程的末尾放置了适当的内存托pipe代码,清除了variables,之后将doevents设置为90 %减less崩溃。

“变化是不可避免的,那些适应得最快的人最有可能生存下来。” -Dr。 拉里·弗林哈特(Numb3rs)

一旦用完了可寻址内存,无论是由于内存泄漏还是使用限制。 如果您认为存在内存泄漏等问题,您需要与Microsoft合作解决,否则将来会出现昂贵的支持凭单。 他们可以解决这个问题,但是你只是花费昂贵的路线去维护一个正在打破和/或不能满足你的需求的系统。

如果您认为您的最佳解决scheme涉及维护旧代码,则切换到Excel 64位。 这有2件事。 它为您提供了一个更大的可寻址内存来处理内存问题。 它还具有改变程序部分的附加价值,可以解决由于内存泄漏而导致的任何问题。 还有其他一些选项,比如OpenOffice / LibreOffice集成了VBA(你的里程可能会有所不同)。

我build议学习一种编程语言,Python,它具有Pandas这样的Excel模块。 这是一个强大的解决scheme,但是需要一些时间来使用,但是从长远来看,您可以从中获得更多的价值。