请注意以下代码:
Sub test()
Dim myObj as Object
Set myObj = CreateObject("ABC.Application")
myObj.visible = TRUE
End Sub
申请ABC在程序结束后关闭。我怎么把它打开?我试过Set myObj = Nothing
但没有用。
答案 0 :(得分:3)
问题出在Dim myObj As Object
语句中,该语句在本地范围内声明。
我试着用一个例子来解释:
Dim a As Object '<-- global declaration
Sub mySub()
Dim b As Object 'local declaration
End Sub
a
和b
之间的区别在于范围:a
具有全局范围,b
具有本地范围。这意味着:
b
将被垃圾收集器收集(因此被销毁)a
相反,不会在执行后被收集为垃圾,因为它的范围是全局的(即直到托管进程存在)。您应该能够修复它,声明全局Object
:
Dim myObj as Object '<-- it will "survive" even after execution
Sub test()
Set myObj = CreateObject("ABC.Application")
myObj.visible = TRUE
End Sub