Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Problem mit automatisierten Excel Start
WMenzel
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Eisenhüttenstadt

Themenstarter:

Problem mit automatisierten Excel Start

beantworten | zitieren | melden

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!
Attachments
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
WMenzel
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Eisenhüttenstadt

Themenstarter:

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.355

beantworten | zitieren | melden

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)?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
WMenzel
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Eisenhüttenstadt

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.826

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
WMenzel
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Eisenhüttenstadt

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 656

beantworten | zitieren | melden

Zitat von WMenzel
... 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
private Nachricht | Beiträge des Benutzers
WMenzel
myCSharp.de - Member



Dabei seit:
Beiträge: 25
Herkunft: Eisenhüttenstadt

Themenstarter:

beantworten | zitieren | melden

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ß
private Nachricht | Beiträge des Benutzers