如何在VBA中释放对象并清除内存

时间:2015-07-27 14:09:13

标签: excel vba memory release

这是我第一次发帖加上业余程序员,所以如果您需要任何其他信息,请告诉我。我有以下问题:

使用excel VBA我连接到另一个程序(即Aspen EDR)。为此,我安装了一个相应的Add-In。访问Aspen EDR我需要添加一个对象。完成后我想释放对象以节省一些内存。我试过的第一件事是:

Dim ObjEDR      As BJACApp
Dim Path        As String

Path = 'assume this is the correct path to the file i want to open
Set ObjEDR = New BJACApp ' Create the BJAC object

If Not ObjEDR.FileOpen(Path) Then
    MsgBox "Can't open file!"
End If

'...

Set ObjEDR = Nothing

我的问题是:在我没有设置对象之后,excel不会释放内存(正如我在任务管理器中看到的那样)。当然经过几百次迭代(我必须打开很多这些文件)后,我收到一条错误信息,excel是内存不足。 我读了几个线程,显然没有什么只删除对象的某种引用而不是对象本身,所以我尝试添加fileclose

'...

ObjEDR.FileClose
Set ObjEDR = Nothing

执行FileClose时,我可以看到释放了一点内存(3,5中的0,5),但仍有大量内存累积。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

删除New关键字,不需要。

Dim ObjEDR      As BJACApp
Dim Path        As String

Path = 'assume this is the correct path to the file i want to open
Set ObjEDR = BJACApp ' Create the BJAC object

If Not ObjEDR.FileOpen(Path) Then
    MsgBox "Can't open file!"
End If

'...

ObjEDR.FileClose
Set ObjEDR = Nothing