Autor Thema: Dokumentenverknüpfung Word-Vorlage  (Gelesen 4170 mal)

Offline volti0815

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Dokumentenverknüpfung Word-Vorlage
« am: 05.03.03 - 09:51:53 »
Hallo,

ich möchte in Notes ein Texthandbuch hinterlegen. In diesem Handbuch sollen die User über eine Schaltfläche ein externes Programm mit einem bestimmten Dokument öffnen. Da es sich hauptsächlich um Word-Vorlagen handelt, möchte ich aber nicht die Vorlage selbst, sondern ein neues Dokument auf Basis der Vorlage öffnen. Mit @Command( [Execute] bekomme ich das aber nicht hin. Hat jemand eine Tipp für mich?

Vielen Dank,

Martin
Notes R5.06a
Domino R5.08
Win NT4 SP6

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #1 am: 05.03.03 - 10:08:51 »
Das Thema Lotus Word hatten wir schon mal im R5 Entwicklerforum,
ist allerdings schon ein paar Monate her.

Probier mal die Suchen Funktion
Ciao
Don Pasquale

Offline meichhorner

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 616
  • Geschlecht: Männlich
    • Webseite von Martin Eichhorner
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #2 am: 05.03.03 - 10:14:11 »
Hy,

z.B. so :

Set word = CreateObject("Word.Application") 'Create Word object
Call word.documents.add("C:\TMP\Return and Uplift.dot") 'Create a new document based on the template "Return and Uplift.Dot"
Set worddoc = word.activedocument 'Get a handle for the active document

Cu
Martin
 ;)
Martin Eichhorner
Schulungen zu Lotus Notes Domino 5 & 6 z.B. Westösterreich(A), Ostschweiz(CH), Bodenseeraum(D)
Tip´s, Trick´s, Tools und eine große Linksammlung findest du unter
http://www.eimsolution.net

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #3 am: 05.03.03 - 10:32:24 »

Hallo Martin,

kennst Du das Problem, dass sich mehrere Word Instanzen
öffnen ?

Ciao

Don Pasquale

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #4 am: 05.03.03 - 10:56:24 »
dazu findest Du einen sehr nützlichen Artikel auf der Site von WFlamme:

Auszug:
Die Automatisierung mit Microsoft Word hat einen Pferdefuß, der häufig nicht berücksichtigt wird: Generiert ein Programm eine neue, unsichtbare Word-Instanz und generiert der Benutzer danach manuell eine neue (aus seiner Sicht die erste) Word-Instanz, so verweisen beide auf dasselbe Objekt (Microsoft Knowledge Base Artikel Nr. Q188546).

Code
Dim objWord as Variant
Set objWord=CreateObject({Word.Application})
objWord.Documents.Add {c:\temp\test.doc}
Debug.Print objWord.ActiveDocument.FullName 'liefert "c:\temp\test.doc"
'Tue irgendwas
'--> Benutzer betrachtet eine *.doc-Datei durch Doppelklick im Windows Explorer, z.B. c:\temp\malgucken.doc
'Tue irgendwas ist beendet
Debug.Print objWord.ActiveDocument.FullName 'liefert "c:\temp\malgucken.doc"
Der erforderliche Workaround sieht so aus, daß zwei Word-Instanzen erstellt werden, dann wird die erste (die, die vom Anwender geöffnet worden wäre) sofort wieder zerstört. Die zweite Instanz ist dann wirklich unabhängig und kann vom Code exklusiv genutzt werden.

Nachdem die Bookmark-basierten Lösungen ja nun ausreichend gut im Web dokumentiert sind, wollen wir zunächst einmal die Alternativlösung mittels Dokumentvariablen betrachten. Eine solche Lösung implementiert man am elegantesten als neue Klasse, die man dann in den verschiedensten Projekten wiederverwenden kann. Das Grundgerüst dieser Klasse soll dabei folgendes leisten:

der Konstruktor der Klasse muß eine unabhängige Word-Instanz bereitstellen, die nicht mit anderen Instanzen kollidiert
auf Bais einer zu übergebenden Feldliste soll eine .dot-Vorlage mit Dokumentvariablen-Feldern generiert werden; diese kann später unter Word nachbearbeitet/nachformatiert werden
auf Basis dieser .dot-Vorlage soll ein neues Word-Dokument erzeugt werden
die Dokumentvariablen des Word-Dokuments sollen beschrieben werden können
die Felder des Word-Dokuments müssen aktualisiert werden können
diese Vorgänge sollen im Hintergrund ablaufen, um den Benutzer nicht abzulenken
das Dokument soll ausgedruckt werden können
wenn die Word-Instanz nicht mehr benötigt wird, soll sie komplett entladen werden (Destruktor)

Die Übergabe des Vorlagennamens kann unter LotusScript als Argument des Konstruktors erfolgen, dies ist jedoch in VB/VBA nicht möglich. Um LotusScript- und VBA-Version einheitlich zu halten wurde stattdessen eine eigene Methode der Klasse implementiert. Hier nun zunächst die Umsetzung in eine einfache LotusScript-Klasse als Muster. Diese wird beispielsweise in eine ScriptLibrary wfWordInterface untergebracht (ich stelle meinen Library-Namen i.d.R. meine Initialien voran, um sie von den Libraries anderer einfach unterscheiden zu können):

Quelle: http://www.sns1.de/partner/flamme/wflamme.nsf/Shortcut/WordInterface1
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline volti0815

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #5 am: 17.03.03 - 18:10:08 »
Hallo Leute,

leider bin ich jetzt erst dazu gekommen, mich mit dem Problem nochmals zu beschäftigen. Ich habe mittels eurer Tipps folgendes Script geschrieben:

Sub Click(Source As Button)
   Dim session As New NotesSession   
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = workspace.CurrentDocument   
   
   Dim word As Variant
   Dim wordoc As Variant
   
   Dim user As String
   
'Predefined values: (replace with field values from uidoc)
   user = uidoc.FieldGetText("From")
   
'Create the Word object:
   Set word = CreateObject("Word.Application") 'Create Word object
   Call word.documents.add("c:\temp\test.dot") 'Create a new document based on the template "test.dot"
   Set worddoc = word.activedocument 'Get a handle for the active document
   
'Assign the field values:
   worddoc.FormFields("User").result = user
   
End Sub

Leider tut sich gar nichts, wenn ich auf den Button klicke. Ich erhalte noch nicht mal ne Fehlermeldung. Was mache ich falsch? Ich muss dazu sagen, dass ich von Lotus Script so gut wie keine Ahnung habe.

Gruß

Martin
Notes R5.06a
Domino R5.08
Win NT4 SP6

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #6 am: 17.03.03 - 19:28:12 »
... gibt es in deiner Word-Vorlage denn das Feld "User" ?

ata
Grüßle Toni :)

Offline volti0815

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #7 am: 17.03.03 - 20:01:32 »
Ich habe das Script mal an einem anderen PC ausprobiert. Jetzt kommt die Fehlermeldung: "
Microsoft Word: Dieser Befehl ist nicht verfügbar, weil kein Dokument geöffnet ist. "
Eine Textmarke "User" ist im Word-Dokument vorhanden. Aber auch wenn ich das Feld aus dem Script entferne, und nur versuche das Dokument in Word zu öffnen, kommt die gleiche Fehlermeldung.

Gruß

Martin
Notes R5.06a
Domino R5.08
Win NT4 SP6

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #8 am: 17.03.03 - 20:05:50 »
... Textmarke ist nicht gleich Formularfeld - und das sprichst du mit deinem Script an - wenn du etwas Zeit hast, dann geh ich mal in meiner KnowledgeBase auf die Suche, ansonsten probier es doch mal im LDD - Suche nach "Word" - du wirst hunderte verschiedener Scripte finden, die funktionieren - ansonsten in einer halben Stunde hier (Essen fassen geht vor...)

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #9 am: 17.03.03 - 20:11:19 »
... hier auf die schnelle ein Code-Schnipsel für Textmarken (Bookmarks) und anschließendem ausdrucken...

Code
In a customer/sales tracking database we needed functionality to print out 
letters using predefined word templates.

Include the code in a button and try it.

Code 

'Defining variables
Dim myApp As Variant
Dim tmp as string

'Starting ms word as a ole object
Set myApp = CreateObject("Word.Application")

'Hiding word from the user
myApp.Visible = False

'Opening the template as a new doc, change tmp$ to the needed template path
myApp.Documents.Add (tmp$)

'Selecting what bookmark to write to
myApp.ActiveDocument.Bookmarks("WhoTo").Select 

'Define what you need to write in tmp$
'Then write it to the bookmark
myApp.Selection.TypeText(tmp$)

'Setting word to print in the foreground, i do this to prevent the rest of the 
code to execute before word is finished
myApp.Options.PrintBackground = False

'Starting printing
myApp.ActiveDocument.PrintOut

'Closing the word document without saving changes
myApp.Documents.Close(wdDoNotSaveChanges)

'Closing word
myApp.Application.Quit

'Releasing myapp
Set myApp = Nothing


Finished. We use this together with templates that uses sub forms that need 
inputs from the user before launching the document. Please feel free to contact 
us for any further information on this isue.

... wobei bei diesem Code die Konstante "wdDoNotSaveChanges" noch deklariert werden muß...

... der Fehler bei dir könnte sein, daß die .dot-Datei eventuell nicht vorliegt...

ata
« Letzte Änderung: 17.03.03 - 20:14:59 von ata »
Grüßle Toni :)

Offline volti0815

  • Frischling
  • *
  • Beiträge: 20
  • Geschlecht: Männlich
Re:Dokumentenverknüpfung Word-Vorlage
« Antwort #10 am: 17.03.03 - 21:06:16 »
Hallo Ata,

dein Beispielscript klappt super.

Gruß

Martin
Notes R5.06a
Domino R5.08
Win NT4 SP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz