3

У нас есть приложение на C #, которое внутренне вызывает Excel. Это делается с помощью Microsoft.Office.Interop.Excel.dll. Приложение работает на большинстве компьютеров с Excel, но не на моем.

Первоначально сбой приложения с HRESULT 0x800706BE (удаленный вызов процедуры не выполнен). Я попробовал почти все советы, найденные в Интернете, но безуспешно. Затем я удалил свой MS Office 2013 Pro и установил Office 365 v2013. Приложение по-прежнему не работает в той же строке кода, но теперь с HRESULT 0x80010105 (RPC_E_SERVERFAULT).

Есть ли какой-нибудь совет, который вы можете дать, чтобы совместимость с Excel работала? Я предполагаю, что некоторые службы Windows не запущены или компонент DCOM не зарегистрирован. Но я не знаю какой.

Подробности:

  • Windows 7 x64, MS Office 2013 Pro/365 ProPlus
  • Это приложение на C #. Он скомпилирован с VS2010 для .NET 4.0, но проблема проявляется даже тогда, когда приложение скомпилировано с VS2012 для .NET 4.5. С использованием разных версий Microsoft.Office.Interop.Excel.dll.

Есть три факта, которые я считаю важными:

  • Приложение работает на других компьютерах, поэтому причиной проблемы является не приложение.
  • Приложение не работает даже после переустановки (немного другой версии) excel (2013), поэтому, вероятно, это не проблема самого Excel.
  • Я использовал ProcessMonitor от SysInternals, чтобы выяснить, что приложению действительно удается создать экземпляр Excel и Excel успешно (?) читает файл .xlsx Но тогда преуспеть не удается.

Я также использовал отладчик VS2010, чтобы узнать, что происходит:

  • Это ядро кода. Сбой на последней строке в Open:

    using Excel = Microsoft.Office.Interop.Excel;
    object misValue = System.Reflection.Missing.Value;
    
    Excel.Application myExcelApp = new Excel.Application();
    myExcelApp.Visible = false;
    myExcelWorkbooks = myExcelApp.Workbooks;
    myExcelWorkbook = myExcelWorkbooks.Open(xlsxFileFullPath, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
    
  • В журнале событий Windows нет ничего релевантного (в момент сбоя приложения).

  • Вот некоторые из ссылок, которые я нашел, но не дано никаких предложений, или они не помогли: link1, link2, ... (не может опубликовать более 2 ссылок)

2 ответа2

8

После долгих исследований мне удалось решить эту проблему благодаря этой ссылке. По сути, проблема была вызвана сторонним плагином Excel COM, в моем случае это была «Надстройка FoxitReader PDF Creator COM». После его отключения проблема исчезла!

Как отключить плагин: Excel> Файл> Параметры> Надстройки> Управление, затем выберите «Надстройки COM»> Перейти. А затем снимите флажок с проблемного плагина.

1

У меня была та же проблема, что и у xarx. Внезапно созданное мной приложение перестало работать на определенных компьютерах. Код, на котором он падал, был:

Dim fname As String = "B:\Data Warehouse\Lists\WarehouseLists.xls"
    Try
        xlWorkBookList = xlAppLists.Workbooks.Open(fname,, False) 'open the raw data sheet
    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Exit Sub
    End Try

Отключение надстройки Foxit Reader немедленно решило проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .