ass*_*ias 13
帮助释放内存的最好方法是使大对象无效:
Sub Whatever()
Dim someLargeObject as SomeObject
'expensive computation
Set someLargeObject = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
另请注意,全局变量仍然从一个调用分配到另一个调用,因此如果您不需要持久性,则应该不使用全局变量,或者在不再需要它们时将它们置空.
但是,如果:
另一种可能性是切换到64位版本的Excel,它应该能够在崩溃之前使用更多的RAM(32位版本通常限制在大约1.3GB).
Arn*_*son 13
我找到了一个解决方法.起初它似乎需要花费更多的时间,但它实际上使得一切工作更顺畅,更快,因为交换更少,内存更多.这不是一种科学的方法,它需要一些测试才能运行.
在代码中,使Excel不时地保存工作簿.我不得不在一张36万行的纸张上循环而且它很糟糕.每隔10 000我就会使代码保存工作簿,现在即使在32位Excel上也能像魅力一样工作.
如果同时启动任务管理器,则可以看到每次保存后内存利用率大幅下降.