Probleme seit dem Anniversary update windows 10 mit Microsoft.Office.Interop.Excel

  • WPF

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von MarioD.

    Probleme seit dem Anniversary update windows 10 mit Microsoft.Office.Interop.Excel

    Hallo,

    ich habe in der Vergangenheit einige Applicationen erstellt, welche Excel-Dateien erstellen und bearbeiten. Als Schnittstelle zwischen
    Applikation und Excel habe ich stets Microsoft.Office.Interop.Excel genutzt. Das funktionierte auch immer einwandfrei.
    Leider ist das nach dem neusten Anniversary Update nicht mehr so.Ich bekomme nun stets folgende Fehlermeldung:

    "Ausnahme ausgelöst: "System.Runtime.InteropServices.COMException" in mscorlib.dll
    Source: mscorlib Message: Ausnahmefehler des Servers. (Ausnahme von HRESULT: 0x80010105 (RPC_E_SERVERFAULT))"


    Das komische ist: Durchlaufe ich die Programme im Debugmodus, also Zeile für Zeile, läuft das Programm durch und erstellt die Excel-Datei.
    Deswegen habe ich mir die Mühe gemacht und in jeder Zeile eine Debug.Writeline-Marke gesetzt, um herrauszufinden wo genau der Fehler entsteht.

    Es kann fehlerfrei eine Excel-Application erstellt und geöffnet werden und ihr kann ein Workbook übergeben und dort Worksheets angesprochen werden.
    In den Bereichen, wo ein Worksheet schließlich mit Daten gefüllt und graphisch bearbeitet wird, varrieren die Positionen, andenen der Fehler auftritt.
    In folgenden Code-Blöcken tritt der Fehler jedoch öfters auf:

    C#-Quellcode

    1. sheetUK.get_Range("A" + rowIndex, "M" + rowIndex).Style.HorizontalAlignment = XlHAlign.xlHAlignCenter;
    2. sheetUK.get_Range("B" + rowIndex, "E" + rowIndex).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlHairline);
    3. sheetUK.get_Range("F" + rowIndex, "I" + rowIndex).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlHairline);
    4. sheetUK.get_Range("A" + rowIndex, "M" + rowIndex).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium);
    5. sheetUK.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);


    oder

    C#-Quellcode

    1. sheetGerman.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    2. sheetGerman.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Bold = true;
    3. sheetUK.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    4. sheetUK.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Bold = true;
    5. sheetUSA.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
    6. sheetUSA.get_Range("A" + rowIndex, "M" + rowIndex).Cells.Font.Bold = true;


    Auf anderen Windows-Rechnern (Win7 und Win10 ohne Anniversity Update) laufen die Programme stabil und fehlerfrei durch.
    Ich habe bereits Office repariert, mir die neuste Version von Microsoft.Office.Interop.Excel besorgt und Stunden in Google verbracht.
    Leider habe ich keine Lösung gefunden.

    Kann mir jemand hier weiterhelfen? Gibt es eine Alternative zu Microsoft.Office.Interop.Excel?

    Gruß,

    Mario
    Hallo nochmal,

    falls jemand mal ein ähnliches Problem hat, hier ein Lösungsansatz:

    Die Idee kam mir, als ich zum wiederholten mal per Debug-Modus Zeile für Zeile
    durchlaufen habe und dabei wieder kein Fehler aufgetreten ist.

    Meine Vermutung war, dass das Programm stabil läuft, wenn es
    langsamer ausgeführt wird. Somit habe ich zumindest in den Kritischen
    Bereichen (siehe oben), zwischen jeder Zeile ein Thread.Sleep(100)
    eingefügt. Und siehe da ... es läuft stabil.

    Ich habe jedoch keine Ahnung warum es so ist. Ich kann nur vermuten,
    dass die Excel-Datei mit der Menge der Zeichenbefehle (Rahmen setzen,
    Hintergrundfarbe wechseln, etc.) nicht mithalten kann und so kommt es
    zwischen den beiden Programmen (Applikation und
    Excel) irgendwann zum Konflikt. Warum dieses Problem jedoch erst nach
    dem Anniversary-Update aufgetreten ist, bleibt mir schleierhaft.

    Gruß,

    Mario