Hallo,
ich habe eine Auswertung über verschiedene Dokumente der Datenbank und möchte an bestimmten Stellen einen Seitenumbruch einfügen, damit aus dieser Auswertung mehrere Seiten (nach z. B. Bereichen) generiert werden.
Jetzt dachte ich an NotesRichTextItem + NotesRichTextNavigator + NotesRichTextRange:
Dim rti as New NotesRichTextItem(doc, "Body")
Dim rtn As NotesRichTextNavigator
Set rtn = rti.CreateNavigator()
call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Dim rtr As NotesRichTextRange
Set rtr = rti.CreateRange()
Do While rtr.FindAndReplace("(PageBreak)","") > 0
%rem wenn das hier auskommentiert ist, funktioniert zumindest die Textersetzung, sodass die Schlüsselwörter entfernt sind
Call rti.BeginInsert(rtr) ' hier schlägt sowohl rtr als auch rtn fehl
Call rti.AddPageBreak()
Call rti.EndInsert()
%endrem
Loop
Aber wenn ich das ausführe (nicht auskommentiert), kommt der Fehler
Error 4506 Element or Navigator is invalid
Vielleicht habt ihr damit ja mehr Erfahrung und könnt einen kleinen Denkanstoß liefern.
Danke!
Hallo,
habe deine Frage zufällig gesehen, weil ich auf der Suche nach der Lösung zu einem ähnlich gelagerten Problem war.
Mach die Suche nicht über
Call rtn.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
sondern mit
Call rtn.FindFirstString("(PageBreak)")
dann setzt du den Seitenumbruch mit
Call rti.BeginInsert( rtNav, True )
Call rti.AddPageBreak()
Call rti.EndInsert
Wie du das alles in eine Schleife verpackst, bleibt dir aber selbst überlassen ;-))
Am Ende nimmst du dann noch eine einfache Variante zu deiner 'Do While' Schleife, um den String "(PageBreak)" zu löschen:
rtr.FindAndReplace("(PageBreak)", " ", 16)
Achte darauf, dass das zweite Argument ein Leerschritt ist, mit "" hat es bei mir nicht geklappt.
Die 16 am Ende ist der Long-Wert von RT_REPL_ALL und veranlaßt, dass alle im RichText Feld gefundenen Suchstrings ersetzt werden.