Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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.
-
@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
-
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
-
@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
-
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... ;)
-
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
-
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
-
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.... ???
-
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
-
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
-
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
-
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?
-
Hi,
du kannst VBA für die Makroprogrammierung innerhalb der Applikationen (als z.B. Word, Excel usw.) nutzen.
Axel