Excel-Interop-Remote-Prozeduraufruf fehlgeschlagen oder RPC_E_SERVERFAULT

7343
xarx

Wir haben eine C # -Anwendung, die intern Excel auslöst. Dabei wird Microsoft.Office.Interop.Excel.dll verwendet. Die Anwendung funktioniert auf den meisten Computern mit Excel, nicht jedoch auf meinen.

Ursprünglich schlug die Anwendung mit HRESULT 0x800706BE fehl (Der Remoteprozeduraufruf ist fehlgeschlagen). Ich hatte fast jeden Ratschlag aus dem Internet ausprobiert, jedoch ohne Erfolg. Dann habe ich mein MS Office 2013 Pro deinstalliert und Office 365 v2013 installiert. Die Anwendung schlägt immer noch in derselben Codezeile fehl, aber jetzt mit HRESULT 0x80010105 (RPC_E_SERVERFAULT).

Gibt es einen Rat, den Sie geben können, damit Excel Interop funktioniert? Ich vermute, dass ein Windows-Dienst nicht gestartet ist oder eine DCOM-Komponente nicht registriert ist. Aber ich weiß nicht, welche.

Einzelheiten:

  • Windows 7 x64, MS Office 2013 Pro / 365 ProPlus
  • Es ist eine C # -Anwendung. Es wurde mit VS2010 für .NET 4.0 kompiliert. Das Problem tritt jedoch auch dann auf, wenn die App mit VS2012 für .NET 4.5 kompiliert wird. Bei Verwendung verschiedener Versionen von Microsoft.Office.Interop.Excel.dll.

Es gibt drei Fakten, die ich für wichtig halte:

  • Die Anwendung funktioniert auf anderen Computern, daher ist nicht die Anwendung die Ursache des Problems.
  • Die Anwendung funktioniert auch nach der Neuinstallation von (einer etwas anderen Version von) Excel (2013) nicht, daher ist es wahrscheinlich kein Problem von Excel.
  • Ich habe den ProcessMonitor von SysInternals verwendet, um herauszufinden, dass die Anwendung das Excel wirklich instanziieren kann und das Excel erfolgreich (?) Die XLSX-Datei liest. Aber dann schlägt Excel fehl.

Ich habe auch den VS2010-Debugger verwendet, um herauszufinden, was los ist:

  • Dies ist der Kern des Codes. Es schlägt in der letzten Zeile in Open fehl:

    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); 
  • Im Windows-Ereignisprotokoll ist nichts relevant (zu dem Zeitpunkt, zu dem die App fehlschlägt).

  • Hier sind einige der Links, die ich gefunden habe, aber es wurden keine Vorschläge gemacht oder sie haben nicht geholfen: link1, link2, ... (es können nicht mehr als 2 Links gepostet werden )
3

2 Antworten auf die Frage

7
xarx

Nach langer Recherche konnte ich dieses Problem aufgrund dieses Links lösen . Im Wesentlichen wurde das Problem durch ein Excel COM-Plug-In eines Drittanbieters verursacht. In meinem Fall handelte es sich um "FoxitReader PDF Creator COM Add-In". Nach dem Deaktivieren war das Problem weg!

So deaktivieren Sie das Plugin: Excel> Datei> Optionen> Add-Ins> Verwalten. Wählen Sie anschließend "COM-Add-Ins"> Start. Und dann das problematische Plugin lösen.

Vielen herzlichen Dank! Das war's! Für jeden französischen Kollegen, der den französischen Fehler sucht: Échec de l'appel de procédure distante Simon vor 7 Jahren 0
Wie zum Teufel hast du das herausgefunden? Vielen Dank! Jason Washo vor 6 Jahren 0
1
Thomas Bailey

Ich hatte genau das gleiche Problem wie xarx. Plötzlich funktionierte eine von mir erstellte Anwendung auf bestimmten PCs nicht mehr. Der Code, auf dem es abstürzte, war:

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 

Durch das Deaktivieren des Foxit Reader-Add-Ins wurde das Problem sofort behoben.