excel 使用MSHTA打开文件意外退出

cbeh67ev  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(83)

我正在尝试使用以下代码打开一个文件

Set wShell=CreateObject("WScript.Shell")
Set oExec=wShell.Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""")
tmp = oExec.StdOut.ReadLine

但它会让Excel崩溃。我试图将其 Package 在“On Error Resume Next”上,并尝试检查其错误编号和错误描述,但它仍然在“Set oExec”上崩溃。

p8h8hvxi

p8h8hvxi1#

如果我正确理解了你的问题,请使用下一个函数:

Function BrowseForFile() As String
  BrowseForFile = CreateObject("WScript.Shell").Exec( _
    "mshta.exe ""about:<input type=file id=f>" & _
    "<script>resizeTo(0,0);f.click();new ActiveXObject('Scripting.FileSystemObject')" & _
    ".GetStandardStream(1).WriteLine(f.value);close();</script>""" _
  ).StdOut.ReadLine()
End Function

它也可以在VBScript中使用,只是删除它的返回声明。Function BrowseForFile()(没有As String
它可以用下一个Sub进行测试:

Sub testVBScriptBrowse()
  Debug.Print BrowseForFile
End Sub

但是,如果您不太喜欢VBScript,则可以使用更简单的Dialog窗口来浏览文件或文件夹。如果需要的话,我也可以展示这样一段代码。

相关问题