Coger el código de error específico de COMException

Espero que alguien pueda ayudarme. Tengo una excepción específica de COM que debo capturar y luego intentar hacer otra cosa, todos los demás deben ignorarse. Mi mensaje de error con la excepción es:

System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel no puede acceder al archivo 'C: \ test.xls'. Hay varias razones posibles:

Así que mi primer intento fue

try
{
 // something
}
catch (COMException ce)
{
   if (ce.ErrorCode == 0x800A03EC)
   {
      // try something else 
   }
}

Sin embargo, luego leí una advertencia del compilador:

Advertencia 22 La comparación con la constante integral es inútil; la constante está fuera del rango de tipo 'int' ..... ExcelReader.cs 629 21

Ahora sé que el 0x800A03EC es el HResult y acabo de mirar en MSDN y leer:

HRESULT es un valor de 32 bits, dividido en tres campos diferentes: un código de gravedad, un código de instalación y un código de error. El código de gravedad indica si el valor de retorno representa información, advertencia o error. El código de instalación identifica el área del sistema responsable del error.

Entonces, mi última pregunta es ¿cómo me aseguro de atrapar esa excepción específica? ¿O cómo obtengo el código de error de HResult?

Gracias por adelantado.

Respuestas a la pregunta(3)

Su respuesta a la pregunta