自从我们的用户从Excel 2007升级到32位Excel 2013以来,我们公司一直面临着大量的性能和稳定性问题。
我们不得不为一些用户禁用硬件加速,更改控制面板中的设置\轻松访问中心,甚至升级Intel驱动程序以提高稳定性,所有这些都有不同程度的成功。
但我们无法回避的一个问题是:
Excel 2013的32位版本似乎使用自己的内存管理器将32位内存映射到Windows 7使用的64位内存。
问题是,当内存变得过于零碎时,Excel 2013将完全崩溃。
有时,在使用了一个小时之后,我们看到Excel 2013尝试搜索XX‘’Mb内存块,如果找不到这样大小的连续内存块,它就会崩溃。
作为一家金融公司,我们在这些Excel文件中有很多遗留的VBA代码,而迁移到64位的Excel 2013将会带来更多的问题。
那么,有谁知道如何用Excel 2013来解决内存问题呢?
更新
一些读者(可以理解)问我们为什么没有安装Excel 2013的64位版本,特别是在我们运行64位Windows 7的时候。
引用微软的话,原因是兼容性。
“我们向大多数用户推荐32位版本的Office,因为它与大多数其他应用程序更兼容,尤其是第三方插件。这就是为什么32位版本的Office 2013默认安装,甚至在64位Windows操作系统上也是如此。”
我们的用户不想要铃铛,口哨或时髦的动画。他们想要的是稳定的东西,即使用他们的Excel文件和10年前写的VBA。其中一些代码甚至使用FORTRAN .dll计算引擎、DAO库等。
从IT支持的角度来看,我们只想要一个Excel的版本,它仍然是微软所支持的。
这就是我们现在使用32位Excel 2013的原因。
问题是,对于32位Excel 2013来说,这是一个棘手的问题,大多数金融公司仍然大量供应遗留的Excel/Access应用程序.我们怎样才能使这个环境更加稳定?
发布于 2016-07-13 10:54:52
在我的项目中,我也遇到了这个问题之王,但是由于我管理了带有doevents关键字的代码,并在函数和过程的末尾放置了适当的内存托管代码,所以清除变量,然后放置doevents,这样就可以减少90 %的崩溃。
发布于 2015-12-28 13:15:55
“变化是不可避免的,那些适应得最快的人最有可能生存下来。”-Dr。拉里·弗莱因哈特(Numb3rs)
一旦您耗尽可寻址内存,您就完成了,无论是由于内存泄漏还是使用限制。如果您认为有一个问题,如内存泄漏,您将需要采取它与微软,一个昂贵的支持票在您的未来。他们可以修复它,但您只是走昂贵的路线来维护一个正在崩溃和/或无法满足您的需求的系统。
如果您认为最好的解决方案包括维护旧代码,那么切换到Excel 64位。这做了两件事。它为您提供了一个更大的可寻址内存,用于解决内存问题。它还具有更改程序部分的附加价值,这些部分可能修复由于内存泄漏而产生的任何问题。还有其他选项,如OpenOffice/LibreOffice具有VBA集成(您的里程可能有所不同)。
我建议学习一种编程语言Python,它有像Pandas这样的Excel模块。这是一个强大的解决方案,但它需要一些时间来使用,但从长远来看,您可以从中获得更多的价值。
https://stackoverflow.com/questions/33939749
复制相似问题