首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何释放Aspen对象并清除内存

如何释放Aspen对象并清除内存
EN

Stack Overflow用户
提问于 2018-03-11 08:12:58
回答 2查看 232关注 0票数 0

这是我第一次使用这样的论坛。我有和这里完全一样的问题:How to release an object and clear memory in VBA

在这个帖子中,不幸的是这个问题没有得到解决。

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

代码语言:javascript
复制
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

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

'...

代码语言:javascript
复制
ObjEDR.FileClose
Set ObjEDR = Nothing

在执行FileClose时,我可以看到释放了一些内存(3MB的0.5),但仍然有大量的内存在积累。

此外,当不使用"Now“时,它不工作,并且在执行Set ObjEDR = BJACApp时,我得到”运行时错误‘424’:需要对象“

我还读到了一些“指针”,它们可能会导致驻留内存增加,但是我如何才能找到并清除/删除它们呢?有谁有主意吗?我真的很感激!

EN

回答 2

Stack Overflow用户

发布于 2018-03-11 08:47:25

如果.Quit (或对象的等价物)和将对象设置为Nothing对您不起作用,那么您可以尝试依靠VBA的垃圾收集器来完成这项工作。

从本质上讲,这意味着您需要将子对象一分为二,拥有主子对象,并在该子对象中调用将打开和关闭对象的子对象。希望在第二个子对象退出时,VBA将清理这些对象。

代码语言:javascript
复制
Sub Main()

    Dim filePath As String

    For Each [..] In [..]   ' Or use a Do...Loop

        filePath = 'assume this is the correct path to the file i want to open

        openObj filePath    'call the sub below

    Next [..]

End Sub

Sub openObj(ByVal Path As String)

    Dim ObjEDR      As BJACApp

    Set ObjEDR = New BJACApp ' Create the BJAC object

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

    [...]   'your code to perform the needed actions with your obj

    ObjEDR.FileClose
    Set ObjEDR = Nothing

End Sub

我对这个对象一无所知,但您也应该尝试一下.Quit.Close

另一种方法是,而不是为每个路径创建新对象。将Set ObjEDR放在循环的之外的上,并在每次打开新文件时使用相同的对象。

票数 0
EN

Stack Overflow用户

发布于 2018-03-16 16:19:15

好的,对于那些感兴趣的人: Aspen Tech的支持告诉我

ObjEDR.dispose()

应该可以工作,但只适用于V8.4以上的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49215343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档