如果没有先打开Excel,system.diagnostics.process将无法打开Excel文件

时间:2014-07-09 16:54:26

标签: vb.net excel

我有一个VB.Net应用程序,我有一个通用方法来使用system.diagnostics.process打开本地驱动器上存在的文档。

Public Shared Function OpenFileWithProcess(ByVal lsFileNameWithPath As String, Optional ByVal lPrintOption As PrintOutputOption = PrintOutputOption.Preview)

    Try
        Select Case lPrintOption
            Case PrintOutputOption.Preview
                Dim P As System.Diagnostics.Process
                P = Process.Start(lsFileNameWithPath)
                If Not P Is Nothing Then
                    Dim handle As IntPtr = P.Handle
                    SetForegroundWindow(handle)
                End If

            Case PrintOutputOption.Print
                Dim Proc As New Process
                Proc.StartInfo.FileName = lsFileNameWithPath
                Proc.StartInfo.UseShellExecute = True
                Proc.StartInfo.Verb = "Print"
                Proc.Start()
       End Select
    Catch ex As Exception
        If oSQL.Key_Developer Then
            Stop
        End If
        Throw ex
    End Try
End Function

在某些拥有Windows8和OFfice2010的计算机上,如果不先打开Excel,此方法将无法打开Excel文件。相反,它会出错“运行时错误2147467259(80004005)。将命令发送到应用程序时出错。”

如果Excel在方法调用之前打开,则文件打开就好了。

一些额外的环境信息:
- VB.NET应用程序编译为.Net Framework 4 - 应用程序部署在Windows 7,8和8.1

我可以捕获错误并尝试使用在错误后挂起的Excel会话再次启动该过程,但我想知道是否有人可以告诉我或帮助我弄清楚这里发生了什么。

感谢您的时间。

0 个答案:

没有答案