由于内存碎片,Excel 2013崩溃

由于内存碎片,Excel 2013崩溃,excel,vba,Excel,Vba,自从将我们的用户从Excel 2007升级到32位Excel 2013以来,我们公司面临着堆积如山的性能和稳定性问题 我们不得不为某些用户禁用硬件加速,更改控制面板\Ease of access center中的设置,甚至升级英特尔图形驱动程序以提高稳定性,所有这些都取得了不同程度的成功 但我们无法回避的一个问题是: 32位版本的Excel 2013似乎使用自己的内存管理器从32位内存映射到Windows 7使用的64位内存 问题是,当内存变得太零碎时,Excel 2013将完全崩溃 有时,在使

自从将我们的用户从Excel 2007升级到32位Excel 2013以来,我们公司面临着堆积如山的性能和稳定性问题

我们不得不为某些用户禁用硬件加速,更改控制面板\Ease of access center中的设置,甚至升级英特尔图形驱动程序以提高稳定性,所有这些都取得了不同程度的成功

但我们无法回避的一个问题是:

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

问题是,当内存变得太零碎时,Excel 2013将完全崩溃

有时,在使用一小时后,我们会看到Excel 2013试图搜索一块XX'Mb的内存,如果找不到这种大小的连续内存块,它就会崩溃

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

那么,有人知道如何用Excel 2013解决内存问题吗

更新

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

引用微软的话,原因是兼容性

“我们建议大多数用户使用32位版本的Office,因为它与大多数其他应用程序,尤其是第三方加载项更兼容。这就是为什么默认安装32位版本的Office 2013,即使在64位Windows操作系统上也是如此。”

我们的用户不想要铃铛、口哨或时髦的动画。他们想要的东西是稳定的,即使他们的Excel文件和10年前编写的VBA。有些代码甚至使用FORTRAN.dll计算引擎、DAO库等

从IT支持的角度来看,我们只需要一个仍然受Microsoft支持的Excel版本

这就是我们现在使用32位Excel 2013的原因

问题是,对于32位Excel 2013来说,这是一个棘手的问题,大多数金融公司仍然大量使用传统的Excel/Access应用程序。。。我们能做些什么使这个环境更加稳定?

变化是不可避免的,适应最快的人最有可能生存下来

一旦可寻址内存用完,无论是由于内存泄漏还是使用限制,都可以完成。如果您认为存在诸如内存泄漏之类的问题,则需要与Microsoft联系,您的未来将面临昂贵的支持费用。他们可以修复它,但你只是走了一条昂贵的道路来维护一个正在崩溃和/或无法满足你需求的系统

如果您认为最好的解决方案是维护旧代码,那么请切换到Excel 64位。这有两件事。它为您提供了一个更大的可寻址内存,可以解决内存问题。它还具有更改程序部分的附加值,这可能会修复由于内存泄漏而出现的任何问题。还存在其他选项,例如具有VBA集成的OpenOffice/LibreOffice(您的里程可能会有所不同)


我建议学习一种编程语言Python,它有像Pandas这样的Excel模块。这是一个功能强大的解决方案,但使用它需要一些时间,但从长远来看,你会从中获得更多的价值。

我在我的项目中也遇到过这个问题,但由于我使用doevents关键字管理代码,并将适当的内存管理代码放在函数和过程的末尾,清除变量,然后放入事件,这样可以减少90%的崩溃。

内存碎片不是问题。。。RAM中的R代表随机。@PhilippSander,因为你可以阅读德语,这个链接可能会有帮助@MikeGledhill是的,但我不知道它太零碎的可能性会随着内存的增加而降低。但是8GB应该足够了。我希望我的办公室能给我们这么时髦的笔记本电脑。我们必须在Office2010上用朋克卡来运行!不要太嫉妒。我们仍然每天晚上备份股票行情。说真的,这是我读过的对这里报道的合法问题的最奇怪的回复之一。顺便说一句,此内存问题在Excel 2016 32位中已修复。问题就这样消失了。也许这句话应该是“Excel 2013中的bug是不可避免的,诸如此类……”!!