Autor Thema: LotusScript und EXCEL-Objekt  (Gelesen 2235 mal)

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
LotusScript und EXCEL-Objekt
« am: 08.07.22 - 13:27:30 »
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


Code
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

"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline Ralf_B

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #1 am: 08.07.22 - 15:27:47 »
Funktioniert bei mir ohne Probleme .....   mit :
xcl.Application.quit
Bitte mal probieren.

Gruß
Ralf

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #2 am: 08.07.22 - 16:21:43 »
Excel-Application kann sich selber beliebig tief verschachtelt aufrufen: https://docs.microsoft.com/de-de/office/vba/api/excel.application.application
Ich würde im 1. Schritt mit getObject() versuchen eine bestehende Excel-Instanz zu holen bevor eine neue erstellt wird und mit xcl.Visible=True dafür sorgen das diese auch sichtbar ist.
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #3 am: 08.07.22 - 21:52:09 »
Guten Abend,

Vielen Dank. Auch bei Verwenden dieses Kommandos ist es jedoch so, dass  - auch nach Beenden des Clients und des Designers - beim Öffnen irgendeiner der erzeugten EXCEL-Dateien, ein weiteres EXCEL-Fenster parallel geöffnet wird. Diese zusätzliche EXCEL-Datei ist nicht gespeichert und der Dateiname dieser Datei wird bei jedem Öffnen einer erstellten EXCEL-Datei hochgezählt: "name1.xlsx" ... , beim nächsten Mal "name2.xlsx" u.s.w.

Aber: Nach einiger Zeit (Minuten) und beendetem Agenten passiert das nicht mehr. Dann wird nur die ursprüngliche EXCEL-Datei in einem nun Bildschirm füllenden Fenster geöffnet. Eine weitere Datei öffnet sich nicht mehr.

Könnte es sein, dass erst dann das Application-Object gelöscht wurde? Notes ist weiterhin geöffnet.

Die EXCEL-Arbeitsblätter werden übrigens durch den Agent nur erstellt. Das ".Visible" werde ich nicht benötigen, oder? "getObject()" werde ich testen.

Nochmals vielen Dank.


"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #4 am: 09.07.22 - 09:28:17 »
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 :-:
Code
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
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #5 am: 14.07.22 - 09:58:59 »
Hallo Erik,

Danke für Deine Antwort. Sooo tief stecke ich leider nicht in der Materie.

Nach dem Schreiben der Dateien sind alle so, wie ich sie mir wünsche. Nur dass eben immer eine weitere geöffnet wird.
Mir ist aber aufgefallen, dass beim Runterfahren des Rechners immer auf eine noch geöffnete EXCEL-Anwendung hingewiesen wird.
Welches Objekt(?) da aber noch im Speicher hängt, kann ich mir nicht erklären.

Ich forsche weiter.

Ich möchte nur nicht, dass der Eindruck entsteht, ich ließe den Thread voller Undankbarkeit versumpfen  ;)

Falls es nach dem Finden einer Lösung  ???  noch geht, stelle ich dies hier ein.

Viele Grüße
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #6 am: 18.07.22 - 15:38:53 »
Hallo Forum,

Es scheint, als dass das Phänomen des parallelen Öffnens mehrerer Excel-Dateien dann auftritt, wenn der Agent im "Debug"-Modus gelaufen war.

Ohne "Debug" scheint jetzt alles in Ordnung zu sein. ("W'steiner alkoholfrei"-Smiley  ;))

Viele Grüße.
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

Offline aoibhneach

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
Antw:LotusScript und EXCEL-Objekt
« Antwort #7 am: 13.10.22 - 09:08:59 »
Hallo,

Oh Mann; heute Nacht (!!!) kam mir plötzlich die Idee, warum das Geschilderte mit den doppelten EXCEL-Fenstern passiert.

Im Agenten habe ich zwar dafür gesorgt, dass die EXCEL-Application beendet und die Workbooks etc. geschlossen werden. Aber bei einem Programmabbruch  (wegen Fehlers oder während des "Debug") kommt der Agent ja nicht an diese Stelle. Im Taskmanager tummelten sich dann natürlich einige EXCEL-Icons.

Das Beenden der EXCEL Application und das Schließen von Workbooks müssen auch in das "Terminate"-Event des Agenten muss. Nun wird EXCEL immer sicher beendet.
Das war ein Pappgroschen mit Fallschirm.   ::)

Ein nicht mehr ganz taufrischer Thread. Aber ich hoffe, es ist ok

Viele Grüße,

Nils
« Letzte Änderung: 14.10.22 - 06:39:14 von aoibhneach »
"Der verlorenste aller Tage ist der, an dem man nicht gelacht hat."

Sébastien-Roch Nicolas de Chamfort

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz