Laden...

Problem mit automatisierten Excel Start

Erstellt von WMenzel vor einem Jahr Letzter Beitrag vor einem Jahr 1.065 Views
W
WMenzel Themenstarter:in
28 Beiträge seit 2012
vor einem Jahr
Problem mit automatisierten Excel Start

Hallo,
ich benutze Windows10 und MS Studio Community 2022. Im Code verbinde ich mich mit Excel und lese die Version aus. Hat alles bisher geklappt. Neuerdings aber funktioniert das nur, wenn ich Excel vorher geöffnet habe. Ich habe den Verdacht, das es mit dem letzten Update vom Studio zu tun hat. Leider finde ich keine Lösung dafür. Die Version ist:
Microsoft Visual Studio Community 2022 (64-Bit) - Current Version 17.2.3

Hier mal den Code-Schnipsel:


     using Excel = Microsoft.Office.Interop.Excel;

     public void Officeversion()
      {
         var appVersion = new Excel.Application();
         appVersion.Visible = false;
         TExcelVersion.Text = appVersion.Version.ToString();
         // Excel wieder schließen
         appVersion.Quit();
         appVersion = null;
         GC.GetTotalMemory(false);
         GC.Collect();
         GC.WaitForPendingFinalizers();
         GC.Collect();
         GC.GetTotalMemory(true);
         //Excel-Process komplett beenden
         Process[] myProcesses;
         myProcesses = Process.GetProcessesByName("Excel");
         foreach (Process p in myProcesses)
         {
            p.Kill();
         }
      }

Ich habe noch ein jpg angehängt, wo man die Fehlermeldung sieht.

Würde mich ja über Ideen freuen.
Danke!

16.807 Beiträge seit 2008
vor einem Jahr

Visual Studio ist eine Entwicklungsumgebung und keine .NET Runtime - also zwei völlig verschiedene Dinge.
Das Update von VS kann also nicht für den Fehler verantwortlich sein, weil Du ein Runtime Error bekommst.

CO_E_SERVER_EXEC_FAILURE sagt auch aus, dass der Fehler von Excel kommt, nicht von VS.
Google ich den Fehler kurz, so gibts viele Treffer, dass der Fehler geworfen wird, wenn man versucht Excel bzw. Office Produkte ohne Desktop-Access zu starten, zB aus einem Windows Service, was eben nicht geht.
Gibt aber viele weitere Hinweise, zb Security Context Changes.

PS: bitte in Zukunft [Hinweis] Wie poste ich richtig? beachten, also Code selbst in die entsprechenden Tags packen, sodass niemand Plaintext Code lesen muss und den Fehler bitte in Zukunft nicht mehr als Bild anhängen; danach kann man nämlich nicht suchen und Du machst es potentiellen Helfern schwerer, weil diese den Error nicht raus kopieren können.

PPS: die installierte Office Version (und damit vermutlich auch Excel) bekommt man auch über die Registry Keys; man muss also nicht mit COM arbeiten.
Zumindest funktioniert das immer noch gut mit Computer\HKEY_CLASSES_ROOT\Excel.Application\CurVer

W
WMenzel Themenstarter:in
28 Beiträge seit 2012
vor einem Jahr

Hallo, danke für die Antwort. Allerdings muss ich sagen, das es so lange Zeit schon mit Studio 2019 funktioniert hat und nun plötzlich nicht mehr geht.
Was kann da falsch sein? Ich weiß nicht weiter. Habe jetzt das Studio deinstalliert und installiere eine ältere Version, mal sehen, ob es wieder geht.
Gruß

4.931 Beiträge seit 2008
vor einem Jahr

Verwendest du denn bei beiden Projekten (VS 2019 und 2022) jeweils die gleiche .NET-Version?

Und kommt der Fehler nur bei Debuggen aus VS heraus oder auch direkt beim Starten der Anwendung (vom Windows Explorer aus)?

16.807 Beiträge seit 2008
vor einem Jahr

Nochmal die Frage: warum startest Du überhaupt einen Prozess von Excel, das überhaupt gar nicht notwendig ist?
Wie gesagt: die Version bekommt man viel einfacher über die Registry.

W
WMenzel Themenstarter:in
28 Beiträge seit 2012
vor einem Jahr

Hallo,
na ja, ich starte Excel natürlich nicht nur, um die Version auszulesen. Ich schaue in der Registrierung nach, ob Excel istalliert ist. Wenn ja, erstelle ich eine Instanz und ermittle die Version. Später erstelle ich mit Messdaten eine umfangreiche Excel-Tabelle mit Formatierungen.
Der Fehler kommt auch beim Starten der Anwendung. Da es ein Runtime-Error ist, vermute ich mal, das es am Excel liegt. Allerdings habe ich keine Idee, warum!! Bisher war es egal, ob ich mit 2019 oder 2022 gearbeitet habe. Die Idee war auch schon, eine ältere .Net zu verwenden. Eigentlich ist des doch so eine einfache Funktion, die Excel Instanz zu erzeugen, aber trotzdem...
Danke für euer Interesse.

16.807 Beiträge seit 2008
vor einem Jahr

Dafür kannst Du auch einfach OpenXML verwenden, das es seit 15 Jahren gibt und für solche Zwecke auch gedacht ist (automatische Dokumentengenerierung).
Welcome to the Open XML SDK 2.5 for Office
Excel als Instanz für den Automatismus zu betreiben macht man schon Jahre nicht mehr; wegen den enormen Nachteilen und potentiellen Fehlern - ganz abgesehen, dass das einfach in vielen Szenarien gar nicht funktioniert (bzw. nur in wenigen Desktop-Fällen).

Für Excel gibts eine Abstraktionen https://github.com/EPPlusSoftware/EPPlus (Lizenz beachten!) oder https://github.com/ClosedXML/ClosedXML

Woher aber Dein Fehler stammt, kann ich Dir nicht sagen.
In diesem Fall leider nur auf die Google Ergebnisse Deines Errors verweisen - oder eben sagen, wie man es eigentlich macht (-> OpenXML).

W
WMenzel Themenstarter:in
28 Beiträge seit 2012
vor einem Jahr

Hm, ok, werde mich mal damit beschäftigen, danke für die Info.
Allerdings will ich noch anmerken: Wenn ich Excel vom Desktop öffne und gleich wieder schließe, dann funktioniert es auch aus C' heraus, allerdings nach kurzer Zeit wieder nicht mehr. Ich habe schon x Seiten in Google gelesen, aber es kommt kein zielführendes Ergebnis heraus, leider.
Hier im Forum gab es das Problem auch schon mal, aber offensichtlich ohne Ergebnis.

Gruß
Wolfgang

A
764 Beiträge seit 2007
vor einem Jahr

... allerdings nach kurzer Zeit wieder nicht mehr ...

Hallo Wolfgang

Das sind die Seiteneffekte, wenn du versuchts Excel als Prozess zu automatisieren. Das wird dir dann immer wieder so gehen. (Habe selbst eine Zeitlang sowas gemacht)

Also hör schön auf Abt und mach das mit OpenXML 🙂

Viele Grüße
Alf

W
WMenzel Themenstarter:in
28 Beiträge seit 2012
vor einem Jahr

Hallo,
danke für die rege Anteilname.
Ich habe mich jetzt für ClosedXML entschieden. Das hat wunderbar geklappt und funktioniert problemlos. Auch alle nötigen Formatierungen klappen.
Gibt es gegen ClosedXML was zu sagen?

Gruß