Domino 9 und frühere Versionen > Entwicklung
Adressenetiketten aus LN erstellen
Xantox:
--- Zitat von: Axel am 20.03.03 - 13:28:13 ---Hi,
das liegt an dieser Zeile in der Routine CreateMailingLabels:
Set wrd = CreateObject ( "Word.Application" )
Der Funktion CreateObject ist es egal ob ein Wordtask vorhanden ist oder nicht. Es wird immer ein neuer gestartet.
Ich hab' s 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")
objWord.Visible = True 'Word sichtbar machen
End If
...
Ich versuche erst auf eine bestehende Task zuzugreifen, wenn das nicht gelingt, weil Word eben noch nicht läuft, starte ich es.
Axel
--- Ende Zitat ---
Hallo Axel,
wo hast Du denn Deine Änderung im Script eingetragen? magst du vielleicht dein modifiziertes script posten?
habe ich das richtig verstanden und es wird dann nicht eine extra word-session beim erstellen der labels geöffnet, sondern die vorhandene genommen?
Bei dem script ist bei mir immer der fehler aufgetreten, das nach dem korrekten erstellen der labels und schliessen von word die wordsession sich bei den diensten nicht beendet hat. Somit ist dann immer das "temp.doc" von word geöffnet geblieben und eine fehlermeldung erscheint, das die "temp.doch" gerade in verwendung ist beim erneuten ausführen des labelagenten.
ist dieser fehler dann evtl. auch behoben?
Grüße Xantox
Axel:
Hi,
welches Script verwendest du denn? Ist eknoris oder atas Lösung?
Axel
Xantox:
ich verwende das script von eknori.
Grüße
Axel:
Hi,
du musst nur die Zeile Set wrd = CreateObject ( "Word.Application" ) durch meine Zeilen ersetzen.
Auszug aus eknoris Script (Routine CreateMailingLabels)
--- Zitat --- ...
cr = Chr ( 13 ) & Chr ( 10 )
wdCell = 12
LabelCount=1
DivMod = 1
Set db = s.CurrentDatabase
Set dc=db.UnProcessedDocuments
On Error Resume Next
Set wrd = GetObject("", "Word.Application")
If Err = 208 Then ' Fehler 208 tritt auf wenn Word noch nicht läuft
Err = 0
Set wrd = CreateObject("Word.Application")
End If
Call wrd.Documents.Add
Call wrd.MailingLabel.CreateNewDocument ( LabelTemplate )
wrd.visible = True
Set doc=dc.GetFirstDocument
While Not doc Is Nothing
LabelAddress = GetListFieldValues ( doc , Line1Fields ) & cr '// Build label tex
...
--- Ende Zitat ---
Das hast du richtig verstanden. Wenn word bereits gestartet ist, wird diese Session benutzt, sonst wird Word aufgerufen.
Zu deinem anderen Problem kann ich im Moment nichts sagen, da im Orginalscript von eknori die Wordsession nicht beendet wird. Dazu bräuchte ich deinen Code.
Axel
Xantox:
Hallo Axel,
danke für die schnelle Antwort.
Ich werde das später gleich mal ausprobieren.
--- Zitat ---
Zu deinem anderen Problem kann ich im Moment nichts sagen, da im Orginalscript von eknori die Wordsession nicht beendet wird. Dazu bräuchte ich deinen Code.
--- Ende Zitat ---
Also mein Problem war/ist, das nachdem du deine Etiketten aus den gewünschten Kontakten über word gedruckt hast, das du dann zwar das word schliessen kannst. aber unter den diensten immer noch die winword-session läuft, die für das etikett gestartet worden ist.
durch das script wird ja für word temporär das "temp.doc" generiert, damit die adressendaten mit der vorlage von word zusammgefügt werden können.
jetzt schliesst du die wordanwendung, die winword-session bleibt geöffnet und somit auch das "temp.doc". jetzt möchte der user weitere etiketten drucken und das bricht dann mit der fehlermeldung ab, das das temp.doc bereits in verwendung sei.
jetzt kann ich natürlich meinen usern nicht erzählen, sie sollen in den task-manager gehen und alle ihre winwordsessions beenden ;)
daher suche ich noch die lösung zu diesem problem *g* :)
Grüße
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln