我在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>
答案 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"