Excel.Application in VB.NET

Begonnen von gandal, 04. Juli 2007, 11:05:49 Uhr

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

gandal

Vielleicht weiß das jemand zufällig ... hoffe ich

Ein Applikation verwendet ein Excel-Objekt.

  Dim oXL As Excel.Application
  Dim oWB As Excel.Workbook
  Dim oSheet As Excel.Worksheet

  oXL = CreateObject("Excel.Application")
  oXL.EnableEvents = False
  oXL.DisplayAlerts = False

  oWB = oXL.Workbooks.Open(pOneFile, , , , , , , , , , , False)
  oSheet = oWB.Sheets("MeineDaten")

  ' ..................................................
  ' Hier steht der Code zur Verarbeitung
  ' ..................................................

  ' Objekte verwerfen und Excel beenden
  oSheet = Nothing
  oWB.Close()
  oWB = Nothing
  oXL.Quit()
  oXL = Nothing

Das funktioniert soweit ganz gut, wenn man die Applikation beendet.
Eigentlich sollten in der Applikation aber verschiedene Exceldateien verarbeitet und anschließend in ein Sicherungsverzeichnis verschoben werden.

Das Problem ist jetzt, dass Excel im Taskmanager weiter läuft und erst nach einer Zeit x verschwindet. Das bringt mehrere Probleme mit sich.
Das erstellen einer neuen Excel.application geling nicht immer zuverlässig (PC hängt), die verwendete Datei kann nicht unmittelbar nach der Verarbeitung verschoben werden, da sie noch von einem Process verwendet wird.
In VB6 funktioniert das alles wunderbar, diese Effekte treten erst mit Verwendung von VB.Net auf.

Gibt es da eine Möglichkeit die Objekte verbindlich und unmittelbar zu  zerstören ?  Die Methode des GarbageCollectors  "GC.Collect()" funktioniert bespielsweise nicht.
Das ist jetzt echt madig, will das ganze Projekt nicht zurück portieren. Es besteht natürlich die Möglichkeit, alles in eigene EXE-Dateien zu zerlegen, das möchte ich mir jedoch ersparen. Es sollte ja alles innerhalb einer Applikation laufen können ... hoffe ich wenigstens.
         
Real Programmers code in binary