2015-09-25 62 views
1

我使用以下代碼(如發現here)在Word2010中找到快捷方式的目標路徑:VBA WSCRIPT.SHELL .close給錯誤

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 

當運行該代碼,如圖(修改以用我的快捷方式名稱),我收到以下錯誤:

Run-time error '438':

Object doesn't support this property or method

.Close線突出了調試。當我註釋掉.Close該腳本正常工作。

如果shell不關閉,會造成問題嗎?我讀過.Close對於Wscript.Shell不是必需的,但無法確認。

+0

你在期待'.Close'做,到底是什麼? –

+0

我不需要或期望它做任何事情。我只是不確定它爲什麼不起作用,並且如果'Wscript.Shell'沒有'.Close'命令時出現問題。我仍然在學習所有這些,不想實施會導致問題的事情。 –

+0

嗯,你輸入它,所以你一定有一些目的?你想關閉什麼?如果您不告訴我們您要做什麼,那麼很難幫助您解決錯誤。 –

回答

1

快捷方式對象沒有Close方法,這就是爲什麼你會收到錯誤。這link列出了WScript.Shell的基本操作。

如果你正打算處理的外殼對象,做最好的辦法是

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

With objWshShell.CreateShortcut(Lnk) 

.Save 

Getlnkpath = .TargetPath 

End With 

Set objWshShell = Nothing 
+0

謝謝Shalvin。由於我沒有將shell對象分配給變量,我是否需要處理它?另外,如果最後一行說'Set objWshShell = Nothing'? –

+0

就你而言,由於你沒有將shell對象分配給變量,所以不需要處理。另外,這是一個錯字,在最後一行使用objwshshell –

0

發佈這個答案的人誰仍然停留在試圖創建後關閉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"