我正在编写一个脚本,以基于以下SO答案通过Windows shell使用默认程序打开文档:
Dim Shex As Object
Set Shex = CreateObject("Shell.Application")
tgtfile = "C:Naxdud.txt"
Shex.Open (tgtfile)
我注意到Shell.Application
的实例永远不会关闭。在我的代码中,我Set Shex = Nothing
,但这足够吗?例如,如果我创建一个 Word 或 Outlook 实例,则需要在将变量设置为空之前用.Quit
关闭它。这里没有明显的类似情况。
我设置了对Microsoft Shell Controls and Automation
的引用来浏览Shell
对象,但找不到.Application
或.Parent
属性的任何方法,更不用说看起来像.Quit
的方法了。
我错过了一些明显的东西吗?垃圾回收器是否也以某种方式摆脱了实例?它是特定于外壳对象本身的东西吗?
考虑一下,我很确定@jamheadart是正确的,我只是在实例化一个 VBA 类,而不是在 Windows 中创建应用程序类。
不过,可以肯定的是,我接受@Mert Y的建议,即使用上下文管理器来限制范围。
最终代码:
With CreateObject("Shell.Application")
.Open (strPath)
End With