关闭 Shell.Application 个实例

Close Shell.Application Instance

我正在编写一个脚本,通过 Windows shell 使用默认程序打开文档,基于 this SO answer:

Dim Shex As Object
Set Shex = CreateObject("Shell.Application")
tgtfile = "C:\Nax\dud.txt"
Shex.Open (tgtfile)

我注意到 Shell.Application 的实例永远不会关闭。在我的代码中,我 Set Shex = Nothing,但这就够了吗?例如,如果我创建一个 Word 或 Outlook 实例,我需要在将变量设置为空之前用 .Quit 关闭它。这里没有明显类似的事情发生。

我设置了对 Microsoft Shell Controls and Automation 的引用来探索 Shell 对象,但找不到 .Application.Parent 属性的任何方法,更不用说一个了看起来像 .Quit.

我是不是遗漏了什么明显的东西?垃圾收集器是否也以某种方式摆脱了实例?它是否特定于 shell 对象本身?

考虑一下,我很确定@jamheadart 是对的,我只是在实例化一个 VBA class 而不是在 [=17= 中创建一个应用程序 class ].

不过,可以肯定的是,我采纳了@Mert Y 的建议,即使用上下文管理器来限制范围。

最终代码:

With CreateObject("Shell.Application")
    .Open (strPath)
End With