Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: snore am 05.11.16 - 17:19:22
-
Hallo Forum,
schon wieder so ein Sch...
Ich bekomme automatisiert per eMail Informationen in ein Body-Field einer Mail-In-Datenbank und möchte nun einen Agenten bauen, welcher mir nach Eingang neuer Mail den Text im Body durchsucht und Werte darin ersetzt bzw. ergänzt. Der 1. grobe manuelle Test klappt soweit!
Ich scheitere aktuell daran den Text, welchen ich einfügen möchte "Fett" und "Farbig" zu machen...
...
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim body As NotesRichTextItem
Dim SucheText1 As String
Dim ErsetzeText1 As String
Dim rtnav As NotesRichTextNavigator
Dim rtrange As NotesRichTextRange
Dim rtpStyle As NotesRichTextParagraphStyle
Dim richStyle As NotesRichTextStyle
Sub Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
If dc.Count = 0 Then
Exit Sub
End If
Set doc = dc.GetFirstDocument
Set body = doc.GetFirstItem("Body")
Set rtnav = body.CreateNavigator
Set rtpStyle = session.CreateRichTextParagraphStyle
Set richStyle = session.CreateRichTextStyle
SucheText1 = ( "Hans" )
ErsetzeText1 = ( "Franz" )
????? ..wie bringe ich nun den Franz in Schriftgröße 12 und farbig ????
richStyle.FontSize = 12
richStyle.NotesColor = COLOR_DARK_RED
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
n% = 0
Set rtrange = body.CreateRange
While rtrange.FindAndReplace(SucheText1, ErsetzeText1, RT_FIND_CASEINSENSITIVE) > 0
n% = n% + 1
Call body.Update
Wend
If n% > 0 Then
Call body.Compact
Call doc.Save(True, True)
End If
End Sub
Danke !!
snore
-
Hmm, ich habe es nicht gemacht, aber .FindAndReplace() macht genau das, nämlich einen Text austauschen. Da gibt es keine zusätzliche Formatierung.
Um den Text noch mit Styles zu "verschönern" musst Du die Stelle suchen und einen Range erstellen. .FindAndReplace() setzt den Range auf den gesuchten Text. Innerhalb des Ranges kannst Du dann den Text löschen und die gewünschten Styles vorher und hinterher mit NotesRichTextItem.AppendStyle() einfügen (Du brauchst noch einen weiteren Style zum Zurücksetzen). - Das ganze Handling ist halt irre umständlich.
Da ich den Hintergrund Deiner Anforderung nicht kenne, ist es schwierig nach einfacheren Lösungen zu suchen. Wenn Dich nur interessiert, ob ein bestimmtes Wort vorkommt, könntest Du das Vorhandensein beispielsweise in der Ansicht/im Order flaggen; alternativ einen Schalter über der Mail, die den Text durchsucht und anzeigt, ob und welcher Text vorkommt.