【发布时间】:2015-03-13 16:52:55
【问题描述】:
我正在使用 Excel,通过对 Notes 服务器的 VBA 调用,根据 Notes 数据库中的数据绘制财务结果图表。它实际上是一个实时“更新”过程。 代码开始:
Set Session = CreateObject("Lotus.NotesSession") 'Start a session to notes
Call Session.Initialize
Set nam = Session.CreateName(Session.UserName)
但我没有明确指示会话关闭。我是不是该?我什至可以这样做吗?
我想在几个宏调用之后整个事情都会变慢,但这可能是其他的!
如果没有显式关闭它会使会话保持打开状态,我如何重新连接到它(无需再次登录)?
【问题讨论】:
-
CreateObject 返回一个 COM 对象。当所有引用都被删除时,它将(嗯,应该)“处理”/“关闭”自身。因为这是,嗯,COM 而不是 .CLR 的东西,我发现最好手动“释放”代码引用(例如,完成后,
Set Session = Nothing)。见stackoverflow.com/questions/19038350/… 效果是一样的当变量超出范围,但注意变量的生命周期。我建议对以这种方式获得的所有对象进行严格的生命周期清理。
标签: excel lotus-notes vba