Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tuxie am 08.04.04 - 16:51:13
-
Hallo,
ich habe mal wieder ein Problemchen,
und zwar hat mein Chef jetzt ein wunsch, wo ich absolut nicht weiß wie ich diesen Realisieren soll.
Ich habe eine Newsletterdatenk erstellt in der ich
Hauptdokumente und Antwortdokumente habe
Hauptdokument
Antwortdokument
Antwortdokument
Newsletter
Rubrik
Beiträge
Jetzt möchte mein Chef einen ganzen Newsletter Markieren und durche einen Tastendruck soll dieser Newsletter mit Allen Antwortdokumenten als Worddokument exportiert werden. Da ich (leider) mit LN Script auf Kriegsfuß stehe weiß ich nicht wie ich das Relaisieren kann.
Im Hauptdokument habe ich folgende Felder die übergeben werden müssen.
Jahrgang
Ausgabe
Nummer
Im darunterliegenden Antwortdokument (Rubrik)
Habe ich nur die Rubrik die Übergeben werden soll
Rubrik
Im Antwortdokument auf die Rubrik sind folgende Felder enthalten.
Ueberschrift
Text
Kann mir bitte jemand helfen ich weiß echt nicht mehr wie ich das Anstellen soll
Tschau Ingo
-
Schau mal per Forumsuche nach Word Export...
In der Sandbox hat es auch diverse dieser Scripte - wenn Du dann konkret ein Problem hast dann poste doch nochmal hier...
http://www-10.lotus.com/ldd/sandbox.nsf
Gruss
Martin
-
Hallo,
das habe ich bereits gedahn, ich habe auch schon eine Klasse die ich hier im Forum gefunden habe versucht einzubinden, ich scheidere aber daran die Antwortdokumente mit einzubeziehen.
TSchau Ingo
-
Hi,
ich hab mal auf die Schnelle aus dem Kopf was zusammengestrickt. Pack den Code in die entsprechenden Abschnitte eines Agenten. Das Ganze basiert auf der Klasse, die du im Forum gefunden hast. Zur Sicherheit findest du die Klasse auch hier: http://www.free.dominoserver.de/computer/noteslibrary.nsf/d2d59a3d7fc73a2bc1256a6900638352/331dd66d2239a1b2c1256dc50038f49e!OpenDocument (http://www.free.dominoserver.de/computer/noteslibrary.nsf/d2d59a3d7fc73a2bc1256a6900638352/331dd66d2239a1b2c1256dc50038f49e!OpenDocument)
Ich hoffe der Code ist einigermaßen vollständig. Ich habe ihn nicht getestet. Aber eigentlich sollte es so funktionieren. Die Lösung ist ein rekursiver Lauf durch alle Antwortdokumente.
(Options)
Use "libWord"
(Declarations)
Dim cWord As cWord
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim strVorlage As String
strVorlage = "c:\Temp\Vorlage.dot"
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument 'Erstes markiertes Dokument
'Neue Instanz der Klasse cWord
Set cWord = New cWord
'Neues Dokument auf Basis der Vorlage erstellen. Dot muß nicht im Vorlagenverzeichnis liegen
Call cWord.CreateNewDoc(strVorlage)
'Einfügen der Daten aus dem Hauptdokument
Call cWord.Insert(doc.Jahrgang(0))
Call cWord.Insert(Ausgabe(0))
Call cWord.Insert(Nummer(0))
Call BearbeiteAntworten(doc)
Call cWord.ActivateWord ' Word in den Vordergrund
Delete cWord
End Sub
Sub BearbeiteAntworten(doc)
Dim responses As NotesDocumentCollection
Dim tmpDoc as NotesDocument
Set responses = doc.Responses 'Alle Antworten in eine Collection einfügen
Set tmpdoc = responses.GetFirstDocument
While Not (tmpDoc Is Nothing)
If tmpDoc.Form(0) = "Antwort" 'Prüfung um welche Art von Antwort-Doc es sich handelt
'Wenn Antwort auf Hauptdokument
Call cWord.Insert(tmpdoc.Rubrik(0))
Else
'Wenn Antwort auf Antwort
Call cWord.Insert(tmpdoc.Ueberschrift(0))
Call cWord.Insert(tmpdoc.Text(0))
End If
Call BearbeiteAntworten(tmpdoc) 'Rekursiver Aufruf
Set tmpDoc = responses.GetNextDocument(tmpDoc)
Wend
End Sub
Hier If tmpDoc.Form(0) = "Antwort" musst du an deine Maskennamen anpassen.
Schöne Ostern
Axel
-
Gute (Oster-)Antwort - Axel.
Habe Dein Script mal angesehen (aber auch nicht getestet), aber genau so sollte es laufen :D
Rekursiver Aufruf ist hier exakt die Lösung, um auch Antwort zu Antwort zu Antwort etc. zu erschlagen.
Happy Easter
Matthias
-
Vielen Dank @Axel,
ich werde es gleich ausprobieren, muß ich bei der Wordvorlage irgendetwas beachten Textmarken oder so ?
Tschau Ingo
-
Hi,
wenn du das Script so einsetzt, nicht. Allerdings erfolgt die Ausgabe in das Worddokument völlig unformatiert. Das Script soll nur zeigen wie es prinzipiell gehen kann.
Wenn das Ganze formatiert werden soll, dann muß man da noch ein bisschen basteln. Das ist dann Fleissarbeit.
Axel
-
Hallo,
bei der Zeile mosert er rum
If tmpDoc.Form(0) = "Antwort" 'Prüfung um welche Art von Antwort-Doc es sich handelt
Hier muß doch der Wert in den Hochkommas geändert werden.
oder?
TSchau Ingo
-
Hi,
ja. Hier muß der Name der Maske rein, mit der deine Antwortdokumente erstellt werden. Der Name muss in Anführungszeichen stehen.
Axel
-
und wenn es zwei verschiedene Masken sind?
TSchau Ingo
-
Dann kommt OR ins Spiel ...
-
Hi,
yoo, dem ist nichts hinzuzufügen.
If tmpDoc.Form(0) = "Maske1" Or tmpDoc.Form(0) = "Maske2" Then
...
Axel
-
Hallo,
danke erst einmal für die Hilfe!!
Ich habe das Script als Agent angelegt, und über die Aktionsleiste rufe ich denn Agent auf.
Es öffnet sich Word und er schreibt mir die Felder des Hauptdokumentes rein und die Antwortdokumente, aber er bringt mir keine Antwortdokumente auf die Antwortdokumente und wie Axel schon gesagt hat ist alles unformatiert.
Woran kann es jetzt liegen das er die Antwortdokumente des Antwortdokumentes nicht ausgegeben wird.
Gut die Formatierung denke icg bekomme ich hin,
TSchau Ingo
-
Hi,
kannst du mal den Code hier posten?
Axel
-
Ich habe den Fehler gefunden, es lag an der If abfrage.
Aber hier tut sich ein ganz anderes Problem auf und dieses Problem nennt dich Richt Text feld. Ich habe in der zweiten Antwortmaske ein Rich Text felder.
Das Problem Formatierung bekomme ich hin.
TSchau Ingo
-
Hi,
den Text kannst du mit der Methode GetFormattedText aus der Klasse NotesRichtextItem auslesen und nach Word schaufeln, allerdings auch ohne Formatierung. Für Grafiken bzw. einen formatierten Export ist mir im Moment kein Weg bekannt.
Axel
-
Mal schauen wie ich das rein bekomme, habe jetzt die Formatierung für die Rubriken, und die Überschriften für die Antwortdokumente fertige, jetzt fehlt mir nur noch der Inhaltstext aus dem RTFeld. Ich habe mir dafür mal die Designerhilfe her genommen aber irgendwie komme ich dann noch nicht so richtig klar
1. Ich muß die Klasse einbinden
2. Ich muß mit der Methode denn Inhalt lesen und dann in eine Variable Speichern
3. Der Inhalt muß an die Methode der Word Klasse übergeben werden.
Soweit denke ich sollte das gehen oder?
TSchau Ingo
P.S.: Ich glaube langsam sehe ich mit LN Script durch ;D
-
Hi,
so ähnlich geht's. Ich hab's hier mal beispielhaft eingebunden.
Dim rtitem As Variant
Dim plainText As String
...
While Not (tmpDoc Is Nothing)
If tmpDoc.Form(0) = "Antwort" 'Prüfung um welche Art von Antwort-Doc es sich handelt
'Wenn Antwort auf Hauptdokument
Call cWord.Insert(tmpdoc.Rubrik(0))
Else
'Wenn Antwort auf Antwort
Call cWord.Insert(tmpdoc.Ueberschrift(0))
Set rtitem = tmpdoc.GetFirstItem( "Text" )
If ( rtitem.Type = RICHTEXT ) Then
plainText = rtitem.GetFormattedText( False, 0 )
End If
Call cWord.Insert(plainText)
End If
Call BearbeiteAntworten(tmpdoc) 'Rekursiver Aufruf
Set tmpDoc = responses.GetNextDocument(tmpDoc)
Wend
...
Axel
-
Irgendwie brauche ich doch nochmal hilfe,
was muß ich jetzt alles noch aufnehmen?
um die Methode GetFormattedText zu benutzen und wie stelle ich es jetzt wirklich an.
Mhh ich glaub es ist besser ich genieße das schöne Wetter.
Ich sehe nämlich vor laute Wald keine Bäume mehr ???
TSchau Ingo
-
Hi,
schau mal mein voriges Posting.
Axel
-
;D ;D ;D ;D naja da habe ich gerate geschrieben wo du das abgeschickt hast.
Vielen Dank
Ingo
-
Ich glaube langsam sehe ich mit LN Script durch
Wollen wir da nicht mal lieber noch zwei, drei Monate warten ;D
Bernhard
PS: Icch will ja keinem den Mut nehmen, aber das Thema ist komplexer als meist erwartet. Und das hat jetzt auch nichts mit Notes / Domino zu tun ...
-
Hallo,
naja ich habe ja nicht gesagt das ich jetzt damit umgehen kann ;D, nee im ernst du hast Recht, aber aller Anfang ist Schwer. ICh könnte jetztr noch kein Script selbstständig erstellen, aber ein Script nachvollziehen kann ich langsam und das meinte ich damit.
Jetzt funktioniert es auch einwandfrei, nur an der Formatierung haberts noch ein wenig aber das bekomme ich auch noch hin.
Tschau Ingo
-
Jetzt funktioniert es auch einwandfrei, nur an der Formatierung haberts noch ein wenig aber das bekomme ich auch noch hin.
Hi,
wenn du dazu noch Hilfe brauchst, melde dich einfach. Ich stecke zwar im Umzugsstress (die Firma zieht um), aber dafür ist noch Zeit. Notfalls abends.
Axel
-
Hallo,
wie schon geschrieben Funktioniert es soweit auch die Übergabe der RTF Felder funktioniert. Was es mir allerdings zerschießt sind Tabellen was nicht gut ist da wir diese benötigen. Gibt es noch einen Trick so das man diese mit rüber bekommt.
TSchau Ingo
-
Hi,
dafür habe ich bis heute noch keine Lösung gefunden. Normaler Text aus einem RTF-Feld ist ja kein Problem, aber bei Tabellen und Grafiken wird es problematisch.
An der Ecke muss ich leider auch passen.
Axel
-
Hallo,
ich habe nocheinmal eine Frage, könnte man in das Script noch was einbauen was von dem jedem Überschriftenfeld die ersten 3-4 Zeichen Wegschneidet das diese nicht mit ausgegeben werden. Ich habe das Nummerrierungen dran wegen der Übersicht. Und diese sollen bei der Ausgabe in Word nicht mit ausgegeben werden.
TSchau Ingo
-
Hat sich erledigt, habe es über ein Word-Macro gemacht.
TSchau Ingo