Wordマクロで選択範囲内だけ置換するときの注意

Pocket

選択範囲内の文字の置換を行うには次のようにします。

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

これならば実行後にダイアログが出ることなく終了します。

[ 2010年9月18日 | カテゴリー: Word | タグ: ]

« | »

コメント

  1. takachen より:

    いつもお世話になっております。

    お教えください。
    置換する対象は文字でなく、空白の行の場合は、どうすればいいでしょうか?
    つまり、空白の行をマクロで削除したいです。

    宜しくお願い致します。

  2. stabucky より:

    >takachenさん
    (手元にWordを使える環境がないので確認できません。ご了承ください)
    「空白の行」とは空行のことですね。
    空行は改行マーク、すなわち段落記号が連続する、と考えられるので次のようにします。
    ワイルドカードを使い、置換前を「^p^p」、置換後を「^p」とします。
    「^p」は段落記号を表します。
    ※実際は空行が2行以上ある場合なども考慮しないとダメかもしれませんが。
    これをマクロで使うには次のページを参考にしてください。
    http://stabucky.com/wp/archives/3458

  3. takachen より:

    早速のご回答ありがとうございます。
    今のところ、手元にテストできる環境がありませんので、後ほどその結果をご報告させていただきます。
    宜しくお願い致します。

  4. Takachen より:

    Stabuckyさん、いつもお世話になります。
    試してみましたが、エラー5692で失敗しました。^pは検索に指定できない特殊文字という内容のメッセージです。
    また、指定範囲内の最後の一行の空行だけを削除したいですが、合わせてお教えいただけますか?
    宜しくお願い致します。

  5. stabucky より:

    >takechenさん
    こちらの環境では、置換前「^p^p」、置換後「^p」とする点は正しく動作しました。
    ところで、マクロを使わずに置換を使って空行を削除することはできますか。
    もしできるならばマクロの記録を使ってどのようにコードが書かれるか確認してください。
    ※メニューの 開発 – コード – マクロの記録 を使います。
    後半の「選択範囲の最後の空行の削除」は分かりませんでした。
    置換ではない方法を使った方がよさそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報