【Word VBA】「検索と置換」ダイアログボックスに文字列を表示させる

本記事のコード(プログラム)は、後日「「検索と置換」ダイアログボックスに文字列を表示させる(その2)」にて更新されています。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

一括置換の翻訳のために、置換用のマクロを使っています。

今は、自分で検索と置換専用のダイアログボックスを設計して使っていますが、以下のマクロを過去ずっと使っていました。かなり便利です。

自作の「検索と置換」ダイアログボックスは、もう少し作りこんでからマニュアルをつけて公開させていただきますので、ご興味がある方はお待ち下さい。

(→後日、山猫の手を公開しました。)

このマクロでできること

選択中の文字列を「検索する文字列」と「置換後の文字列」に自動的に入力します。

それだけのマクロなのですが、コピーして貼り付けて、という手間が2回減りますので、便利ですよ。

なにしろ、一括置換の翻訳では、こういう作業が毎日何十回(いや、何百回)と続くわけですから、その効果はけっこうなものになります。

[検索と置換]ダイアログボックス6

では、なぜわざわざこんなマクロを作っているのか?というと、Wordの性質上、選択中の文字列は、「検索と置換」ダイアログボックスの「検索する文字列」欄に常に自動で入力されるわけではないからです(「検索する文字列」欄に自動入力する場合としない場合 )。

また、「置換後の文字列」欄には自動で入力されません。

そのため、これらを自動で実行してくれるマクロを作りました。

マクロの解説

8行目~12行目で現在選択中の文字列をmyStringに格納しています。

文字が選択されていない場合には、空欄にする処置をしました。このようにする理由は、かつて書いたとおりです(選択されている文字列を文書内で検索するマクロ )。

17行目と18行目で、「検索する文字列」と「置換後の文字列」に選択中の文字列を設定しています。

(後日追記)

6行目で、エラー処理をしております。おそらく、組み込みダイアログボックスのエラーのようなものです。Word 2000の時代からあるようですが、Word 2010になっても依然同様の問題がございます。

ここで表示されるエラーメッセージは、置換数を表示するなど、通常であれば置換後に表示されるべきメッセージです。

また、「検索をする文字列」に文字列に文字を入れずに検索ボタンを押した場合にもエラーになります。

ただ、この種のエラーは無視できるであろうと思われますので、エラーがあってもメッセージは表示させずにおくという処置とさせていただきました。

ご迷惑をかけました。お試し下さい。

(後日さらに追記)

もっと便利な方法があります。こちらをご覧下さい。

「検索と置換」ダイアログボックスに文字列を表示させる(その2)

マクロ


Sub MWM_Replacement()

  '置換ダイアログ
  Dim myString As String

  On Error Resume Next

  If Selection.Start = Selection.End Then
     myString = ""
  Else
     myString = Selection.Text
  End If

  With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = myString
    .Replacement.Text = myString
  End With

  Dialogs(wdDialogEditReplace).Show

End Sub

コメント

  • 6. Re:Re:Re:置換ダイアログ終了時のエラー

    kinuasaさん、

    こんにちは。お久しぶりです。コメントをどうもありがとうございます。

    >下記サイトでもやはりOn Errorで飛ばしているようですね。
    >これが一番簡単な対処方法なんだと思います。

    私も、ネットを中心に調べてみたのですが、On Errorでの処理しか見つかりませんでした。

    それにしても、今回ご紹介いただいたコードすばらしいですね。

    うれしさが増しました!

    毎度、ひと味違うヒントをどうもありがとうございます。

    こちらで紹介させていただきました。
    http://ameblo.jp/gidgeerock/entry-10999113747.html

  • 5. Re:Re:Re:置換ダイアログ終了時のエラー

    eliaさん、

    こんにちは。
    エラーが出なくなってよかったです。

    どうぞご利用下さい。

  • 4. Re:Re:置換ダイアログ終了時のエラー

    >新田順也☆ワードプログラマーさん

    こんにちは。

    ご無沙汰しております、きぬあさです。

    ダイアログのエラー、目に付いたので調べてみました。
    下記サイトでもやはりOn Errorで飛ばしているようですね。
    これが一番簡単な対処方法なんだと思います。

    http://j.mp/qaUidt

    メッセージをエラーとして表示するのではなく、通常と変わらずに表示する場合は「Dialogs(wdDialogEditReplace).Show」を「Application.CommandBars.FindControl(ID:=313).Execute」に置き換えれば良さそうですね(^^)

    kinuasa返信する
  • 3. Re:Re:置換ダイアログ終了時のエラー

    新田様

    早速の修正ありがとうございました! 確認したところ、エラーは出なくなりました。

    いつも便利なコードや興味深い記事を本当にありがとうございます。これからもブログを楽しみにしております。

    elia返信する
  • 2. Re:置換ダイアログ終了時のエラー

    eliaさん

    こんにちは。コメントをどうもありがとうございました。

    エラーを大変失礼いたしました。検証不足でした。

    このコードは、かつての職場で使っていたものです。おそらく当時、同様のエラーメッセージがでたので、何か対処をしていたんでしょうね。

    前の職場で使っていたマクロは現在自宅にはない(退職時に持ち出せませんからね。。。)ので、自宅から職場に送信した「修正前の」マクロだったわけです。失礼しました。

    記事に修正を入れましたので、ご覧下さい。

  • 1. 置換ダイアログ終了時のエラー

    いつも参考にさせていただいております。

    置換ダイアログに選択文字列を入れるマクロ、早速使わせていただいておりますが、置換後にダイアログを閉じようとすると「実行時エラー」メッセージが出てしまい、毎回[終了]ボタンを押さなくてはなりません。

    コードは丸写しなので、もしかすると環境のせい(Word2010です)なのかもしれませんが、回避する方法にお心当たりがありましたら教えていただければと思います。

    よろしくお願いいたします。

    elia

コメント

  1. 木次佳太 より:

    “「検索と置換」ダイアログボックスに文字列を表示させる”を使わさせていただきました。
    最初は、範囲指定とショートカットキーだけでダイアログボックスが開き、置換の文字列がすでに入っているのに感動したのですが、2回目に使うとき(ダイアログが開いた状態で次の置換を行う場合)に、前の置換に使った文字列があるとマクロが作動しないことがわかりました。続けて置換作業を行うことが多く、結局コピペの繰り返しをすることになってしまいました。
    前の置換作業に使った文字列に上書きしてくれるような機能を追加するには、どのような記述を追加すればよいでしょうか?
    教えていただけましたら幸いです。
    よろしくお願いします。

    • 新田順也 より:

      木次佳太さん、マクロをお試しいただきありがとうございます。
      [検索と置換]ダイアログボックスを開いたままの場合は、ダイアログの設定をマクロで変更できません。ご指摘のように検索する文字列もそうですが、検索条件もマクロで変更できないのです。
      そのため、文字列を変更する場合には[検索と置換]ダイアログボックスをEscキーでダイアログを閉じて再度立ち上げてください。

トップへ戻る