如果没有首先打开Excel,system.diagnostics.process将不会打开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会话,但我想知道如果有人可以告诉我或帮助我弄清楚这是怎么回事。

感谢您的时间。