Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 20.12.02 - 14:14:29
-
Hallo Leute,
wenn ich ( für den ach so beliebten Seriendruck) Word aus Lotus
aufrufe, so werden 2 Instanzen aufgerufen. Wenn ich meine Anwendung teste habe im Laufe der Zeit etliche Word Session in meinem Task-Manager laufen.
Gibt es da eine praktikable Idee, mehrfache Word-Sessions zu unterdrücken ?
Ciao
Don Pasquale
-
Hi,
du verwendest mit Sicherheit CreateObject... und damit wird, ohne Rücksicht auf bereits laufende Wordinstanzen, jedesmal eine neue generiert.
Ich habe das so gelöst:
On Error Resume Next
Set objWord = GetObject("", "Word.Application")
If Err = 208 Then ' Fehler 208 tritt auf wenn Word noch nicht läuft
Err = 0
Set objWord = CreateObject("Word.Application") 'Word "unsichtbar" starten
'objWord.Visible = True 'Word sichtbar machen
End If 'If Err = 208 Then
Es wird versucht mit GetObject auf eine laufende Instanz zuzugreifen. Wenn das misslingt, wird eine neue generiert.
das läuft seit Jahren problemlos.
Axel
-
Hallo Axel,
vielen Dank, das klappt einwandfrei.
Kann ich die derart angelegte Winword Session auch aus Lotus heraus wieder schliessen, ohne Word zu beenden ?
ciao
Don Pasquale
-
Hi,
es gibt die Methode Quit. Damit kannst du eine Word - Instanz schließen. Wenn du allerdings mit GetObject auf eine bereits laufende Instanz zugreifst, wird natürlich diese geschlossen.
Axel
-
@Axel
:(
Aber immerhin gibt es eine
Speichern - Sicherheitsabfrage.
Vielen Dank
Don Pasquale
-
Hi,
du mußt zuerst alle Dokumente schliessen.
objWord.ActiveWindow.Close(0)
Schließt das aktive Dokument ohne zu speichern
objWord.Documents("Namen des Dokuments").Close(0)
Schließt das Dokument mit dem entsprechenden Namen ohne zu speichern
Andere Alternative ist die Eigenschaft DisplayAlerts. Damit kann man Warnmeldungen unterdrücken.
objWord.DisplayAlerts = 0
objWord.Quit
Diese beiden Zeile sollte Word ohne Speicherabfrage schliessen.
Axel