自从我们的用户从Excel 2007升级到32位Excel 2013以来,我们公司面临着一系列性能和稳定性问题。
我们必须为某些用户禁用硬件加速,更改控制面板\轻松访问中心中的设置,甚至升级英特尔图形驱动程序以提高稳定性,所有这些都具有不同的级别成功。
但我们无法解决的一个问题是:
32位版本的Excel 2013似乎使用自己的内存管理器将32位内存映射到Windows 7使用的64位内存。
问题是,当此内存变得过于分散时,Excel 2013将完全崩溃。
有时候,经过一个小时的使用后,我们看到Excel 2013尝试搜索一块XX&M; Mb的内存,如果它找不到这个大小的连续内存块,它会崩溃。
作为一家金融公司,我们在这些Excel文件中有一个很多的旧版VBA代码,而迁移到64位Excel 2013会带来更多问题。
那么有没有人知道如何使用Excel 2013修复内存问题..?
更新
有些读者(可以理解)问我们为什么还没有安装64位版本的Excel 2013,特别是当我们正在运行64位Windows 7时。
引用微软的原因是兼容性。
64-bit editions of Office 2013
"我们建议大多数用户使用32位版本的Office,因为它与大多数其他应用程序(尤其是第三方加载项)更兼容。这就是默认情况下安装32位版Office 2013的原因,即使在64位Windows操作系统上也是如此。"
我们的用户不需要花哨,口哨或时髦的动画。即使使用10年前编写的Excel文件和VBA,他们也想要一些稳定的东西。其中一些代码甚至使用FORTRAN .dll计算引擎,DAO库等。
从IT支持的角度来看,我们只想要一个仍然受Microsoft支持的Excel版本。
这就是我们现在使用32位Excel 2013的原因。
问题是,这是32位Excel 2013的一个令人讨厌的问题,大多数金融公司仍然在传统的Excel / Access应用程序上大量供应......我们可以做些什么来使这个环境更稳定?
答案 0 :(得分:1)
我在项目中也遇到过这个问题之王,但是因为我用doevents关键字管理代码并在函数和过程结束时放置适当的内存管理代码,清除变量然后放入doevents所以它将减少90%的崩溃。
答案 1 :(得分:0)
“改变是不可避免的,那些最快适应的人最有可能生存。” -Dr。 Larry Fleinhardt(Numb3rs)
一旦耗尽可寻址内存,您就完成了,无论是由于内存泄漏还是使用限制。如果您认为存在内存泄漏等问题,则需要与Microsoft联系,您将来会获得昂贵的支持服务。他们可以解决这个问题,但你只是花费昂贵的路线来维护一个破坏和/或不能满足你需求的系统。
如果您认为最佳解决方案涉及维护旧代码,请切换到Excel 64位。这样做有两件事。它为您提供了更大的可寻址内存,可以帮助您解决内存问题。它还具有更改程序部分的附加值,可以解决因内存泄漏而导致的任何问题。存在其他选项,例如具有VBA集成的OpenOffice / LibreOffice(您的里程可能会有所不同)。
我建议学习一种编程语言Python,它有像Pandas这样的Excel模块。这是一个强大的解决方案,但它需要一些时间才能使用,但从长远来看,你可以从中获得更多价值。