選択範囲内の文字の置換を行うには次のようにします。
Sub 選択範囲のアをイに置換()
With Selection.Find
.Text = "ア"
.Replacement.Text = "イ"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
With Selection.Find
.Text = "ア"
.Replacement.Text = "イ"
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
この場合、次のようなメッセージが出ることがあります。
選択範囲の検索が終了しました。○個の項目を置換しました。文書の残りの部分も検索しますか?
ここで「いいえ」をクリックすればよいのですが、うっかり「はい」をクリックすると選択範囲外の文字まで置換されてしまいます。
このようなときは「Find.Wrap」プロパティに「wdFindStop」を指定します。
Sub 選択範囲のアをイに置換()
With Selection.Find
.Text = "ア"
.Replacement.Text = "イ"
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
With Selection.Find
.Text = "ア"
.Replacement.Text = "イ"
.Wrap = wdFindStop
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
これならば実行後にダイアログが出ることなく終了します。
コメント
いつもお世話になっております。
お教えください。
置換する対象は文字でなく、空白の行の場合は、どうすればいいでしょうか?
つまり、空白の行をマクロで削除したいです。
宜しくお願い致します。
>takachenさん
(手元にWordを使える環境がないので確認できません。ご了承ください)
「空白の行」とは空行のことですね。
空行は改行マーク、すなわち段落記号が連続する、と考えられるので次のようにします。
ワイルドカードを使い、置換前を「^p^p」、置換後を「^p」とします。
「^p」は段落記号を表します。
※実際は空行が2行以上ある場合なども考慮しないとダメかもしれませんが。
これをマクロで使うには次のページを参考にしてください。
http://stabucky.com/wp/archives/3458
早速のご回答ありがとうございます。
今のところ、手元にテストできる環境がありませんので、後ほどその結果をご報告させていただきます。
宜しくお願い致します。
Stabuckyさん、いつもお世話になります。
試してみましたが、エラー5692で失敗しました。^pは検索に指定できない特殊文字という内容のメッセージです。
また、指定範囲内の最後の一行の空行だけを削除したいですが、合わせてお教えいただけますか?
宜しくお願い致します。
>takechenさん
こちらの環境では、置換前「^p^p」、置換後「^p」とする点は正しく動作しました。
ところで、マクロを使わずに置換を使って空行を削除することはできますか。
もしできるならばマクロの記録を使ってどのようにコードが書かれるか確認してください。
※メニューの 開発 – コード – マクロの記録 を使います。
後半の「選択範囲の最後の空行の削除」は分かりませんでした。
置換ではない方法を使った方がよさそうです。