Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TomLudwig am 03.12.03 - 09:19:40

Titel: Word Dokument erstellen
Beitrag von: TomLudwig am 03.12.03 - 09:19:40
Morgen zusammen,

wie kann ich am leichtesten ein Word Dokument erstellen und diesem dann bestimmte Feldinhalte aus dem geöffneten uidoc übergeben?

Ich hab bisher nur etwas gefunden wie ich ein neues ExcelFile erzeuge. Aber nicht wie ich Felder in einer WordVorlage fülle. Diese dann anzeige und evtl. außerhalb des Dokuments speichere.

Kann mir jemand helfen?!? thx.
Titel: Re:Word Dokument erstellen
Beitrag von: Don Pasquale am 03.12.03 - 09:31:02
@Tom,

Guckst Du hier :

http://www.atnotes.de/index.php?board=7;action=display;threadid=2026;start=0

die Suche nach WORD müßte aber noch ein paar Threads ergeben

Erzähl dann aber mal wie Du voran kommst

Ciao
Don Pasquale
Titel: Re:Word Dokument erstellen
Beitrag von: Axel am 03.12.03 - 09:31:28
Hi,

schau mal hier http://www.atnotes.de/index.php?board=9;action=display;threadid=11741 (http://www.atnotes.de/index.php?board=9;action=display;threadid=11741)

Da solltest du alles finden, was du brauchst.


Axel
Titel: Re:Word Dokument erstellen
Beitrag von: thoge am 03.12.03 - 10:09:08
@TomLudwig,

die Klasse für Word-Automation, auf die Axel verlinkt, solltest Du Dir wirklich mal angucken.
Ich habe die in unser Adressbuch eingebaut, seitdem ist Ruh mit Serienbrief, einfacher Brief, Listen, Fax etc. Weitere Anwendungsfälle in anderen Datenbanken werden mit Sicherheit folgen.

@Axel, das ist wirklich eine "Klasse für sich", vielen Dank dafür.

Mit freundlichen Grüßen

Thomas
Titel: Re:Word Dokument erstellen
Beitrag von: TomLudwig am 03.12.03 - 10:38:17
Die Klasse ist echt spitze. Da kann ich auch nur mein Lob ausprechen.

Aber ich hab den Ehrgeiz, dass ich es selbst mit den NotesClassen hinbekommen möchte.

Ich versuchs jetz mal weiter. Und wenn ich Probleme hab, dann meld ich mich... ;)
Titel: Re:Word Dokument erstellen
Beitrag von: TomLudwig am 03.12.03 - 10:44:01
Und ich hab auch schon gleich das erste Prolem:
Die Datei "Return and Uplift.dot" liegt auf dem Server. Auf diesem Server ist kein Word installiert. Ist es auch mögilch, dass ich die Datei bei mir Lokal liegen haben kann?

Die Fehlermeldung die erscheint lautet:
Dieser Befehl ist nicht verfügbar, weil kein Dokument geöffnet ist.

Sub Click(Source As Button)
   
   Dim s As New notessession
   Dim todaydate As New notesdatetime("Today")
   
   Dim word As Variant
   Dim wordoc As Variant
   
   Dim todaysdate As String
   Dim orderid As String
   Dim producedby As String
   Dim storeid As String
   Dim customername As String
   Dim address As String
   Dim citytown As String
   Dim postcode As String
   Dim daytimeno As String
   Dim eveningno As String
   
'Predefined values: (replace with field values from uidoc)
'   todaysdate = todaydate.localtime
   orderid = "2183763248"
   producedby = s.username
   storeid = "12345"
   customername = "John Doe"
   address = "Apartment 5c, 5 Test Avenue"
   citytown = "Testtown"
   postcode = "XX5 5XX"
   daytimeno = "1234567890"
   eveningno = "0987654321"
   
'Create the Word object:
   Set word = CreateObject("Word.Application") 'Create Word object
   Call word.documents.add("D:\domino\domdata\Entwicklung Felix\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
   
'Assign the field values:
   worddoc.FormFields(1).result = todaysdate
   worddoc.FormFields(2).result = orderid
   worddoc.FormFields(3).result = producedby
   worddoc.FormFields(4).result = storeid
   worddoc.FormFields(5).result = customername
   worddoc.FormFields(6).result = address
   worddoc.FormFields(7).result = citytown
   worddoc.FormFields(8).result = postcode
   worddoc.FormFields(9).result = daytimeno
   worddoc.FormFields(10).result = eveningno
   
   worddoc.saveas(customername) 'save the document with the filename of "John Doe.doc"
   word.visible = True 'Comment this line if you don't want to show Word.
'word.quit 'remove comment if you want to close rather than show Word.
End Sub
Titel: Re:Word Dokument erstellen
Beitrag von: Axel am 03.12.03 - 11:28:10
Hi,

im Prinzip ist es egal, wo die Datei liegt. Sie muss nur für den User zugänglich sein. Ich hab bei uns die Vorlagen auf einem Netware-Server liegen und ein Laufwerk darauf gemappt. Das Ganze funktioniert aber genauso mit Dateien die lokal gespeichert sind.


Axel
Titel: Re:Word Dokument erstellen
Beitrag von: TomLudwig am 03.12.03 - 12:48:42
Jipie es funktioniert..... :)

Aber jetzt möchte ich das ganze erstens verstehen und zweitens dann auch noch für meine Bedürfnisse umstricken.....

Ich hab im NotesUIDocument die Methode CreateObject gefunden:
Set handleV = notesUIDocument.CreateObject( [ name$ [ , type$ [ , filePath$ ] ] ] )

1.Frage:
Gibt es nur diese Möglichkeit ein neues Worddokument oder der gleichen zu öffnen. Oder kann ich das auch noch irgendwie anders machen?
2.Frage:
In der Designerhilfe steht, dass das OLE Objekt in dem aktuellen RichTextField erzeugt wird. Ich habe gar kein solches Feld in meiner Maske. Warum funktioniert es trotzdem?
3.Frage:
Wo kann ich die ganzen Methoden und Eigenschaften dieses Objektes nachlesen?
4.Frage:
Von welchen Typen (z.B. Word.Application) kann ich ein neues Objekt erzeugen?

Sind viele Fragen. Manche vielleicht auch dumm. Aber bitte helft mir, wenn ihr könnt. Ich möchte den Quellcode gerne verstehen....  ???
Titel: Re:Word Dokument erstellen
Beitrag von: Axel am 03.12.03 - 14:13:09
Hi,

zu 1.

Es gibt zwei Möglichkeiten. Einmal mit der LotusScript-Anweisung CreateObject  und mit der Methode notesUIDocument.CreateObject( [ name$ [ , type$ [ , filePath$ ] ] ] ) aus der Notesklasse NotesUIDocument.

zu 2.
Du nutzt in deinem Script die LotusScript-Anweisung CreateObject und nicht die Methode aus der Notesklasse NotesUIDocument. diese Methode erstellt ein Object im aktuellen RTF-Feld, das ist richtig. Da du diese Methode aber nicht nutzt, funktioniert das Ganze auch wenn du kein RTF-Feld hast.

zu 3.
Die Methoden und Eigenschaften zu Word und Excel findest du in der entsprechenden Hilfe zu VBA.
 
zu 4.
Meines Wissen kannst du von den meisten Typen, die in der Registry enthalten sind Objekte erstellen. Ob es allerdings Sinn macht ist eine andere Frage. Im Falle von Word oder Excel hast du nur mit .Application die volle Kontrolle über die Anwendung.
Ich muss aber auch gestehen, ich habe die anderen Typen nie ausprobiert.


Axel
Titel: Re:Word Dokument erstellen
Beitrag von: TomLudwig am 03.12.03 - 14:39:27
Gut, danke. Ich habe alles verstanden....
Nur das mit den Funktionen und Methoden von diesem OLE Object.
Ich hab in der VBA Hilfe von Word nachgeschaut. Das ist ja der größte "Dreck" den ich je gesehen hab.

Gibts da keine schönere Auflistung aller Methoden und Funktionen? Hat sich jemand mal die Mühe gemacht und diese zusammen geschrieben bzw. schon was gefunden?

Vielen Dank
Titel: Re:Word Dokument erstellen
Beitrag von: Axel am 03.12.03 - 18:08:09
Ich hab in der VBA Hilfe von Word nachgeschaut. Das ist ja der größte "Dreck" den ich je gesehen hab.

Hi,

also ganz so schlimm ist sie doch nicht, aber auch ich habe schon übersichtlichere Hilfen gesehen.

Ich habe mir immer mit dem Aufzeichnen von Makros geholfen. Den Quellcode habe ich dann nach LotusScript übernommen und angepasst.

Axel
Titel: Re:Word Dokument erstellen
Beitrag von: TomLudwig am 04.12.03 - 09:02:03
Ja gut, mittlerweilen hab ich mich durchgefuselt....  ;D
Ich kann halt nur die wichtigsten Funktionen, die für mich notwendig sind. Aber das reicht ja auch.  ;)

Eine Frage noch: Per VBA kann ich nur auf OLE-Objekte zugreifen in Lotus Notes. Oder kann ich VBA auch andersweitig einsetzen?
Titel: Re:Word Dokument erstellen
Beitrag von: Axel am 04.12.03 - 09:10:13
Hi,

du kannst VBA für die Makroprogrammierung innerhalb der Applikationen (als z.B. Word, Excel usw.) nutzen.


Axel