VBA。打开文件及其关联的应用程序,其路径存储在变量中

时间:2013-12-09 07:37:23

标签: vba

请帮忙解决这个问题。

我不知道为什么这不起作用:

Public Sub OpenFile(ByVal ImagePath As String)    
   Dim WshShell As Object 
   Set WshShell = CreateObject("WScript.Shell")
   WshShell.Run ImagePath    
End Sub

我收到此异常: (&H80070002)

我正在尝试打开一个文件,其路径存储在变量ImagePath中,这是一个字符串。

情景:

  • ImagePath =“C:\ helloWorld.txt”

当我调用此功能时。我希望文件与其关联软件一起打开。 在这种情况下是文本查看器。

如果是pdf文件,我希望在pdf查看器中打开它。

文件关联在各自的应用程序中打开。

2 个答案:

答案 0 :(得分:1)

您的代码适合我,但如果我在路径中使用空格,我会得到相同的错误。要修复此问题,您的路径必须以“(例如”C:\ youPath“)开头和结尾。将代码更改为:

Public Sub OpenFile(ByVal ImagePath As String)    
   Dim WshShell As Object 
   Set WshShell = CreateObject("WScript.Shell")
   WshShell.Run chr(34) & ImagePath & chr(34)    
End Sub

答案 1 :(得分:1)

就像我在上面的评论中提到的那样,当找不到文件时,应该弹出该错误消息。

这是测试它的一种方法。

Const ErrNo = &H80070002

Sub Sample()
    On Error Resume Next
    OpenFile "C:\ImaginaryFile.pdf"

    If Err.Number = ErrNo Then
        MsgBox "File Not Found"
    End If
    On Error GoTo 0
End Sub

Public Sub OpenFile(ByVal ImagePath As String)
   Dim WshShell As Object
   Set WshShell = CreateObject("WScript.Shell")
   WshShell.Run ImagePath
End Sub