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

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

使用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),但仍有大量内存累积.

谢谢您的帮助 :)

最佳答案 删除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
点赞