段落単位で置換できる
Wordで、特定の範囲だけ置換したかった。

目次
標準機能による置換
普通、置換はこうする。

画像中に示した、「《 》」でくくられた箇所を置換したいとき、[Ctrl] + [ H ]で置換ダイアログを呼び出して、

このようにすればよい。
しかし、これだと当たり前のことながら、文書全体の当該箇所が根こそぎ置換されてしまう。
もちろん、必要な範囲のみ選択した状態で実行すれば良いが、それは単に〝手動〟なのであって、あまり有効な解決策とは言えない。
Find.Executeメソッドによる置換
たとえば、次のリスト1を実行するとどうか。
リスト1 標準モジュール
Private Sub test01()
Call Selection.Find.Execute(FindText:="《*》", _
ReplaceWith:="", _
Replace:=wdReplaceAll, _
MatchWildcards:=True)
End Sub
こいつを実行するとどうなるか。
カーソルのある場所以降の部分のみ置換されるのである。
これは実に便利な仕様。
しかし、これは〝どこから〟しか指定できないことを意味する。
段落単位でFind.Executeメソッドを使う
Wordでは、段落単位で文書の断片を取得することができる。
[Document].Paragraphsコレクションのインデックスを指定すれば良いのである。
たとえば、18番目~21番目の段落の部分のみ置換を実行したければ、次のようなコードを書けば良い。
リスト2 標準モジュール
Private Sub test02()
Dim Doc As Document
Set Doc = ActiveDocument
Dim i As Long
For i = 18 To 21
With Doc.Paragraphs(i)
Call .Range.Find.Execute( _
FindText:="《*》", _
ReplaceWith:="", _
Replace:=wdReplaceAll, _
MatchWildcards:=True)
End With
Next
End Sub
見ての通り、18~21の各段落に順に[Range].Find.Executeメソッドを実行して置換している。

結果はこの通り。
見事に狙った箇所のみ置換することに成功している。
おわりに
これで、置換を施したい対象箇所の始めと終わりに、当該文書内では出てこないような文字列(「@@@」とか。)を目印として置いておき、その段落を取得するようにすれば、文書内の狙った範囲の箇所にのみ置換を実行することができる。
段落番号を取得するやつは、
このときに作成済み。