VBA wscript.shell .close给出错误

时间:2015-09-25 04:39:22

标签: vba shell ms-word

我在Word2010中使用以下代码(找到here)来查找快捷方式的目标路径:

Function Getlnkpath(ByVal Lnk As String) 
On Error Resume Next 
With CreateObject("Wscript.Shell").CreateShortcut(Lnk) 
    Getlnkpath = .TargetPath 
    .Close 
End With 
End Function 

Sub GetLinkPath() 
    MsgBox Getlnkpath("yourshortcutnamehere") 
End Sub 

当我运行如图所示的代码(修改为使用我的快捷方式名称)时,我收到以下错误:

  

运行时错误'438':

     

Object不支持此属性或方法

并突出显示.Close行以进行调试。当我注释掉.Close时,脚本运行正常。

如果shell没有关闭,是否会导致问题?我已经读到.Close不需要Wscript.Shell,但无法确认。{/ p>

2 个答案:

答案 0 :(得分:1)

快捷方式对象没有Close方法,这就是您收到错误的原因。这个link列出了WScript.Shell的基本操作。

如果您打算处置shell对象,最好的方法是

Set objWshShell = WScript.CreateObject("WScript.Shell")

With objWshShell.CreateShortcut(Lnk)

.Save

Getlnkpath = .TargetPath

End With

Set objWshShell = Nothing

答案 1 :(得分:0)

为那些在创建WScript.Shell对象并且无法找到解决方案后仍然试图关闭WScript.Shell对象的人发布此答案。     我的Vb脚本:

        Dim wsh As Object
        Set wsh = CreateObject("WScript.Shell", vbNothing)
        wsh.Run "cmd.exe /C pause"
        wsh.Run "taskkill /F /IM cmd.exe"