关闭 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
我正在编写一个脚本,通过 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