Кто-либо может предоставить некоторую информацию о том, как программно перевести HRESULT значения (http://en.wikipedia.org/wiki/HRESULT) в человекочитаемое сообщение?
Я знаю, что утилита ERR.EXE делает это, но мое приложение должно отобразить некоторое значимое сообщение моим пользователям, а не загадочному 0x800A03EC.
Нет встроенной поддержки для создания сообщений из HRESULT с этим значением. Компонент COM должен реализовать это сам с помощью интерфейса IErrorInfo.
Поддержка взаимодействия среды CLR, встроенная в .NET, уже делает это автоматически, вам никогда не придется помогать. Он автоматически генерирует соответствующее исключение, когда видит, что метод интерфейса COM возвращает код ошибки. Свойство Message инициализируется из IErrorInfo. Если в качестве сообщения вы не получили ничего приличного, значит, COM-сервер его просто не предоставляет.
Что скорее всего для 0x800a03ec, это мелкая низкоуровневая ошибка Excel со многими причинами. Вы можете найти множество совпадений по этому поводу, набрав "ошибка Excel 1004".
Вы пробовали использовать функцию FormatMessage ? Вы можете использовать его из C #, используя механизм PInvoke.