我正在编写一个脚本,通过基于this SO answer的Windows使用默认程序打开文档
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对象本身的东西吗?
发布于 2020-05-27 07:51:37
考虑到这一点,我确信@jamheadart是对的,我只是在运行一个VBA类,而不是在Windows中创建一个应用程序类。
当然,我接受@Mert Y的建议,使用上下文管理器来限制范围。
最终代码:
With CreateObject("Shell.Application")
.Open (strPath)
End Withhttps://stackoverflow.com/questions/62036048
复制相似问题