Excel killt keinen VB.Net Task

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nichtheilig.

    Excel killt keinen VB.Net Task

    Hallo,

    ich habe ein Programm geschrieben, welches sich Informationen aus einer Exceldatei holt, mit diesen Infos eine SQL-Abfrage macht und dann diese Informationen in die Excel-Tabelle schreibt. Anschließend erst wird diese Excel-Datei in Excel dargestellt. Wenn ich das Programm schließe wird dies erkannt und Excel bleibt geöffnet. Wenn ich allerdings die Excelapplikation schließe wird dies nicht erkannt (der Prozess bleibt bestehen). Ich erstelle die Applikation über "create Object" und suche mir die Prozess-ID. Die überwache ich. Allerdings wird dieser Prozess nicht geschlossen wenn ich über das "X" Excel beende. Kann ich die Hoheit über den Task an Excel übergeben?

    Gruß Nichtheilig
    Wenn du Dein Programm schliesst und die Excel-Instanz, die Du fernsteuerst noch offen ist, hast Du schon mal etwas falsch gemacht, du solltest alle Verweise (App, Workbook, Tables, Ranges usw.) schliessen / disposen wenn Du fertig bist mit dem Lesen aus oder dem Schreiben in Excel.
    Excel als Anwender-App würde ich nur über Prozess-Start öffnen, dann hat dein Programm nichts mit der Speicherverwaltung am Hut damit.
    @Dksksm Das wird wohl nicht reichen.
    @Nichtheilig Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der TE knallt ja eh die Prozesse weg, was natürlich eine harte Methode ist.
    Ich selbst brauch den GC nie zu bemühen, allerdings verwende ich auch Erweiterungen, wie ClosedXML (kommt ganz ohne Excel als Anwendung auf) oder NetOffixe (Wrapper für Interop). Je nach dem was man so benötigt gibt es gute Tools die einem das Leben mit den Officeprodukten erleichtern helfen.
    Ja und nein. Ich habe es etwas anders gelöst. Proc.kill hilft mir nicht. Ich nehme mir die PID des EXcel-Prozess und überwache diese. So wollte ich erkennen ob das Excel-Sheet vor meinem Programm geschlossen wird (wäre eine Fehlerquelle). Jetzt mache ich alles in Excel unsichtbar, schalte die Tabelle sichtbar und beende mein Programm. Wenn der User jetzt Excel schließt ist auch mein Prozess weg.