Home » ワードマクロ・Word VBAの使い方 » Word.Findオブジェクト » Word VBAで選択範囲内のみ文字列を置換する

Word VBAで選択範囲内のみ文字列を置換する

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2505(ビルド18827.20164クイック実行)

「wordvba 選択範囲 置換」
といった検索が、このサイト『インストラクターのネタ帳』で行われていました。

選択されている範囲のみの文字列置換をWord VBAで行うには、どのようなコードを書けばいいのかを調べていらした方による検索でしょうか。

選択範囲内のみ文字列を置換するサンプルマクロ

Word文書上で、文字列を範囲選択しておいてから以下のWordマクロを実行してください。

Sub 選択範囲の文字列置換を行う()

 If Selection.Start = Selection.End Then Exit Sub

 Dim str_org As String, str_new As String
 str_org = "Word"
 str_new = "ワード"
 
 With Selection.Find
  .Text = str_org
  .Replacement.Text = str_new
  .Wrap = wdFindStop
  .Execute Replace:=wdReplaceAll
 End With

End Sub

選択範囲内の「Word」が「ワード」に置換されます。

サンプルマクロで行っている処理

いろいろな実装方法がありそうですが、SelectionオブジェクトのFindプロパティを使って

Word.Findオブジェクトを取得するのが、シンプルなコードで済みそうです。

 With Selection.Find
  .Text = str_org
  .Replacement.Text = str_new
  .Wrap = wdFindStop
  .Execute Replace:=wdReplaceAll

文字列の検索を行うWord VBAのコードに、文字列置換を行うためのReplacement.Textプロパティを使ったコードを入れ、

Find.Executeメソッドの引数Replaceに定数wdReplaceAllを指定しています。

範囲選択が行われていない場合、アクティブな文書全体で置換が行われることもあります。
それを避けるために、拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』でも解説しているSelectionオブジェクトのStarプロパティ・Endプロパティを使ってチェックを行い、範囲選択されていなければ、マクロを終了する処理を事前に入れています。

 If Selection.Start = Selection.End Then Exit Sub

また、選択範囲内で処理を確実に終わらせるため、念のためFind.Wrapプロパティに

定数wdFindStopを指定しています。

 With Selection.Find
  .Text = str_org
  .Replacement.Text = str_new
  .Wrap = wdFindStop

最終更新日時:2025-07-08 12:30

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Word.Findオブジェクト » Word VBAで選択範囲内のみ文字列を置換する

「Word.Findオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.