This agent replaces all occurrences of a string that matches user input in the Body item of the current or first selected document.Sub Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
If dc.Count = 0 Then
Messagebox "No document selected",, "No doc"
Exit Sub
End If
Set doc = dc.GetFirstDocument
Set body = doc.GetFirstItem("Body")
Set rtnav = body.CreateNavigator
searchString$ = Inputbox$ _
("Enter the search string", "Search string")
If searchString$ = "" Then Exit Sub
replaceString$ = Inputbox _
("Enter the replacement string", "Replacement string")
If replaceString$ = "" Then Exit Sub
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Set rtrange = body.CreateRange
count& = rtrange.FindAndReplace _
(searchString$, replaceString$, _
RT_REPL_ALL + RT_FIND_CASEINSENSITIVE)
If count& > 0 Then
Call body.Compact
Call doc.Save(True, True)
End If
Messagebox count& & " replacements made",, count&
End Sub
This agent also replaces all occurrences of a string that matches user input in the Body item of the current or first selected document. It uses a loop which is less efficient than RT_REPL_ALL but allows additional coding on a per-iteration basis.
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim body As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtrange As NotesRichTextRange
Sub Initialize
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
If dc.Count = 0 Then
Messagebox "No document selected",, "No doc"
Exit Sub
End If
Set doc = dc.GetFirstDocument
Set body = doc.GetFirstItem("Body")
Set rtnav = body.CreateNavigator
searchString$ = Inputbox$ _
("Enter the search string", "Search string")
If searchString$ = "" Then Exit Sub
replaceString$ = Inputbox _
("Enter the replacement string", "Replacement string")
If replaceString$ = "" Then Exit Sub
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
n% = 0
Set rtrange = body.CreateRange
While rtrange.FindAndReplace _
(searchString$, replaceString$, RT_FIND_CASEINSENSITIVE) > 0
n% = n% + 1
Messagebox "Replacement " & n%,, n%
Call body.Update ' Must update before looping
Wend
If n% > 0 Then
Call body.Compact
Call doc.Save(True, True)
End If End Sub