VBA:内存泄漏导致内存不足错误。。。。我可以手动调用垃圾回收吗?

VBA:内存泄漏导致内存不足错误。。。。我可以手动调用垃圾回收吗?,vba,Vba,新手程序员在这里。我有一个代码,可以从服务器复制12小时的数据,并将其显示在excel中。我的代码将显示的代码导出到一个文件中,每12小时追加一次,这样我就可以有一个月的数据 我的问题是大约20天后我的内存就用完了。从理论上讲,它不应该比原始程序占用更多的数据,而且它在20天后内存不足,这对我来说是内存泄漏。在一个旧的java程序中,我刚刚频繁地调用了垃圾收集器,问题就解决了。在excel vba中是否有这样做的方法?我读过关于将变量设置为零的书,但我有很多变量,我认为真正的问题是将所有读入的数

新手程序员在这里。我有一个代码,可以从服务器复制12小时的数据,并将其显示在excel中。我的代码将显示的代码导出到一个文件中,每12小时追加一次,这样我就可以有一个月的数据

我的问题是大约20天后我的内存就用完了。从理论上讲,它不应该比原始程序占用更多的数据,而且它在20天后内存不足,这对我来说是内存泄漏。在一个旧的java程序中,我刚刚频繁地调用了垃圾收集器,问题就解决了。在excel vba中是否有这样做的方法?我读过关于将变量设置为零的书,但我有很多变量,我认为真正的问题是将所有读入的数据存储为ram,我不知道如何将其设置为零

另一个奇怪的地方——由于内存问题,程序崩溃后,如果不关闭excel,我就无法再次启动程序。所以崩溃后它不会删除内存中的内容


感谢您的帮助

据我所知,您的Excel程序仍在运行,并且每天都保持打开状态(这是我在运行20天后从
了解到的)

使用
Set myVar=Nothing
仍然是一种最佳实践,但假设您不想这样做

我能想到的是创建一个新的Excel实例,在其中运行代码,并在运行代码结束时关闭应用程序

比如:

'Don't forget to add the reference ..  
'Microsoft Excel X,X object library 

Sub myTest()
Dim xlAPp As New Application 

' your code

Set xlApp = Nothing
End Sub

VBA没有传统意义上的垃圾收集——因此特定查询的答案是否定的——但保留引用计数。因此,要释放内存,您需要按照您的建议执行操作,并在不再需要对象时取消对它们的引用。

很抱歉不清楚,谢谢您的帮助,JMax。我所说的20天是指一次复制12小时的数据,20天左右的数据之后,系统崩溃。这是没有意义的,因为我在复制其余数据之前删除了12小时的数据。因此,在我看来,每次迭代都不应该比上次使用更多的内存。但大约40个周期后,我的记忆就消失了。谢谢你的帮助,如果没有相关代码,我看不出我们能帮你什么。为了在每次运行中获取10天左右的数据,您可能应该对代码进行更多的切片。顺便说一句,内存问题可能来自其他地方,您应该告诉我们您遇到的错误是什么(正如Issun指出的)