Hallo Forum,
Ich schreibe über Lotus Script viele Daten in EXCEL-Dateien. Das sieht zunächst alles sehr gut aus. Die für den EXCEL-Export relevanten Zeilen aus meinem Agenten habe ich angehängt.
Das Schreiben der EXCEL-Dateien geschieht rekursiv über eine Schleife, da sich unter jedem "Hauptdokument" viele Response-Dokumente und hierarchisch darunter weitere Response-Dokumente befinden.
Jedoch habe ich den Grund dafür nicht gefunden, warum beim Öffnen einer der neuen EXCEL-Dateien regelmäßig, aber nicht immer, eine zweite EXCEL-Datei geöffnet wird. Es sieht so aus, als wäre es ein EXCEL-Dokument der Art der zuletzt gespeicherten Schablone.
Ist eventuell immer noch ein EXCEL-Objekt geöffnet oder aktiv, obwohl der Agent beendet ist?
Gibt es "noch einen" Befehl zum definitiven Löschen eines EXCEL-Objekts? Ich nahm an, dass mit "xcl.workbooks.Close" und "xcl.Quit" alles "erledigt" sei.
Diese beiden Kommandos führt der Agent nach dem Schreiben jeder Datei aus.
Genügen diese Informationen für eine Idee?
Ich "forsche" nebenbei weiter.
Vielen Dank und Grüße,
Nils
Dim xcl As Variant
Dim sht As Variant
dim filename as string
Set xcl = createobject("Excel.Application")
xcl.workbooks.Add("D:\EXCEL_Templates\"+ "Template.xlt")
Set sht = xcl.worksheets(1)
fileName = "D:\EXCEL_Daten\" & dateiname & ".xlsx"
'Schreiben der Daten
sht.Range("C3") = "...."
sht.Range("C4") = "...."
u.s.w.
sht.SaveAs(fileName)
xcl.workbooks.Close
xcl.Quit
Schon mal geprüft ob Excel-Markos beim Öffnen einer Datei ausgeführt werden?
Und passiert das auch, wenn eine leere Datei ohne Vorlage gespeichert wird?
Deine Beschreibung kann ich so nicht nachvollziehen, aber man könnte noch über WMI einfach alle Excel-Prozesse killen, vielleicht hilft das ja :-:
Dim wmi, pList
Set wmi= GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set pList = wmi.ExecQuery("Select * from Win32_Process Where Name = 'excel.exe'")
ForAll p In pList
p.terminate
End ForAll