Excel - Excel wird nicht im Task-Manager gelöscht.

Asked By Werner Kistner
19-Oct-09 05:39 AM
Hallo,
ich starte eine EXCEL-Application mit:

Private xlApp As Excel.Application
Private xlBook As Excel.Workbook
Private xlChart As Excel.Chart
Private xlSheet As Excel.Worksheet

xlApp = New Excel.Application
With xlApp
xlBook = .Workbooks.Open(Filename:=con.AppPath & "Secure\" & "K1_Factor"
& Ext1, AddToMru:=False)
xlSheet = xlBook.Worksheets(1)
End With

With xlSheet
.Cells.Borders.LineStyle = 1
.    PageSetup.Orientation = CType(2, Excel.XlPageOrientation)
'****hier werden dann die Zellen gefüllt um ein Diagramm zu erzeugen
Try
'***hier wird dann das Diagramm in die Zwischenablage kopiert.
xlChart = .ChartObjects("Diagramm 4").Chart
xlChart.ChartArea.Copy()
Catch ex As Exception
MsgBox("'Diagramm 4' nicht gefunden")
End Try
End With

'***hier wird die Applikation beendet und soll gelöscht werden
xlApp.DisplayAlerts = False
xlBook.Close()
xlApp.DisplayAlerts = True
xlApp.Quit()
xlChart = Nothing
xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing

Die Excel-Applikation wird durch "Quit" im Task-Manager bei der Verwendung
von VB-NET nicht gelöscht. Bei VB6 ist alles OK. Verwende WIN XP + Office
2003
Hat jemand einen Tipp. Besten Dank

Werner
Microsoft Excel
(1)
Office 2003
(1)
Excel 2007
(1)
Vista
(1)
Excel
(1)
VB NET
(1)
XP
(1)
Cells.Borders.LineStyle
(1)
  Thomas Ramel replied...
19-Oct-09 12:37 PM
Gr?ezi Werner

Werner Kistner schrieb am 19.10.2009


Soeweit OJ...


...aber warum verwendest Du hier nicht (wie es dir vorgeschlagen worden
ist):

Set xlApp = New Excel.Application



Hier ebenfalls Set xlBook = ....


und hier Set xlSheet = ...


und hier dann set xlChart = ....


Und hier dann ebenfalls mit der Set-Zuweisung das Objekt zerdt?ren:

Set xlChart = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing



Mit den obigen Anpassungen m?ssten dann eigentlich alle Leichen entfernt
werden.



Mit freundlichen Gr?ssen
Thomas Ramel

--
- MVP f?r Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]
  Werner Kistner replied...
20-Oct-09 03:03 AM
Hallo Thomas,
dies ist der Quelltext für VB-NET und da gibt es kein SET mehr. Habe ich
aber geschrieben.
Werner
  Thomas Ramel replied...
20-Oct-09 01:29 PM
Gr?ezi Werner

Werner Kistner schrieb am 20.10.2009


Hmm, dass Du mit VB-NET arbeitest - ja

Dass es da kein SET mehr gitg - IMO nein.

Irgendwo muss es noch eine Verweis-Leiche in deinem Code geben, mangels
VB-NET kann ich das Ganze aber nicht nachvollziehen.


Wie schaut es denn aus mit den folgenden Anweisungen:

xlChart.ChartArea.Copy()
xlBook.Close()
xlApp.Quit()

Die Methoden die Du verwendest stammen ja aus Excel - sind da die
Klammer-Paare () in VB-NET wirklich notwendig oder wirken sie hier
vielleicht st?rend?



Mit freundlichen Gr?ssen
Thomas Ramel

--
- MVP f?r Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]
  Werner Kistner replied...
21-Oct-09 03:03 AM
Hallo Thomas


Wird nicht mehr benötigt. Diagramm in der Zwischablage ist ausreichend, da
anschließend von der Zwischenablage in ein WORD-Dokument eingefügt wird und
hier dann eine Speicherung erfolgt.


Die Klammerpaare werden von NET automatisch eingefügt, auch wenn keine
Parameter übergeben werden müssen.

Wie erwähnt, gibt es bei VB6 keine Probleme, nur bei NET.
Was ich noch erwähnen muss ist, dass bei jedem Aufruf von EXCEL zwei
Einträge im Task-Manager erfolgen. Wenn die Anwendung 10x läuft so sind 20
Einträge im TM vorhanden, da bei jeden Run die Funktion 2x angesprochen
wird.

Als - MVP für Microsoft-Excel - hasst du bestimmt einen heißen Draht zu MS.
Kannst du einmal bei dieser Stelle nachbohren?

Besten Dank für deine Bemühungen
Werner
  Thomas Ramel replied...
22-Oct-09 12:37 AM
Gr?ezi Werner

Werner Kistner schrieb am 21.10.2009


Das verstehe ich nun nicht so ganz - damit wird doch das Diagramm in die
Zwischenablage kopiert...?


OK, das kennne ich - mangels VB-NET - so halt nicht.


Hast Du dich damit schon mal an eine NET-Gruppe gewandt?


...denn auch das klingt eher eigenartig.


Da t?uschst Du dich - *so* heiss sind unsere Dr?hte nun auch wieder
nicht... ;-)


Mit freundlichen Gr?ssen
Thomas Ramel

--
- MVP f?r Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]
  Werner Kistner replied...
22-Oct-09 02:25 AM
Hallo Thomas

Sorry mein Fehler, du hast Recht.

Das Problem bestand in der Reihenfolge von Quit und Nothing.
Bei folgender Reihenfolge wird EXCEL aus Task-Manager gelöscht

xlApp.DisplayAlerts = False
xlBook.Close()
xlApp.DisplayAlerts = True
xlChart = Nothing
xlSheet = Nothing
xlBook = Nothing
IxlApp.Quit()
xlApp = Nothing

Besten Dank
Werner
  Thomas Ramel replied...
22-Oct-09 01:17 PM
Gr?ezi Werner

Werner Kistner schrieb am 22.10.2009


Ja, stimmt - so macht es Sinn; also umgekehrte Reihenfolge wie bei der
Erstellung.

Fein, dass sich die Sache gel?st hat (und ich habe ein klein wenig ?ber
VB-Net gelernt).


Mit freundlichen Gr?ssen
Thomas Ramel

--
- MVP f?r Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]