区分Excel Interop操作引发的exception

我正在使用Microsoft.Office.Interop.Excel库从C#应用程序中将数据导出到Excel。

调用sheet.Cells[currentRow, 1])与一个无效的currentRow值,导致System.Runtime.InteropServices.COMException消息:

 "Exception from HRESULT: 0x800A03EC" 

ErrorCode -2146827284

但是,我已经收到完全相同的错误代码,订购Excel以保存到写保护文件。

有没有办法区分从Excel接收到的COMExceptions,所以我可以相应地处理它们? 我宁愿不把用户留在“使用Excel工作时出错,对不起,太糟糕了”。

我已经与Excel互操作了好几年了,但是我还没find办法。 您最好的select是在潜在问题发生之前进行检查。 我希望有更好的,但据我所知,没有。

编辑
您可以在VBA中捕获不同的错误,所以Excel本身可以区分各种错误,但是我相信.NET会将所有这些错误都分解为一个COMException类,它不会提供任何详细信息。

我发现这篇文章详细介绍了VBA错误代码:
http://support.microsoft.com/kb/146864

COMException的全部意义在于它从COM的一面回来。 通常,在COM中,错误条件由来自特定方法的HRESULT返回值不为0来表示。

不幸的是,这是错误信息在“合同”中的内容。 所以你得到的错误值(0x800A03EC是相同的值-2146827284)。 .NET方面的东西没有进一步的信息。