例: FindAndReplace method

  1. 次のエージェントは、現在 (または最初に) 選択されている文書の Body アイテムにユーザーが入力した文字列と一致するすべての文字列を置き換えます。
    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
  2. また、次のエージェントは、現在 (または最初に) 選択されている文書の Body アイテムにユーザーが入力した文字列と一致するすべての文字列を置き換えます。RT_REPL_ALL よりも効率の低いループが使用されますが、繰り返し単位で追加のコーディングが可能です。

    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