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

2011年8月27日

先日紹介した記事(【コード】「検索と置換」ダイアログボックスに文字列を表示させる)のマクロに対して、きぬあささんからいただいた以下のコメントをもとに、進化したマクロを作ってみました。

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

http://j.mp/qaUidt

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

まいど、有益な情報をご提供いただき、どうもありがとうございます。

このマクロでできること

文字列を選択した状態で実行すると、選択されている文字列が「検索と置換」ダイアログボックスの「検索する文字列」欄と「置換後の文字列」欄に自動で入力されます。

前回紹介した「『検索と置換』ダイアログボックスに文字列を表示させる」の記事では、組み込みのダイアログボックスを利用しました。

ただ、この方法だと、置換のタブが選択されたままで、検索のタブをクリックにて表示できません(お試し下さい)。

今回の方法では、[Ctrl] + [H]を押して表示される「検索と置換」ダイアログボックスと同じものが表示されますので、検索のタブも、ジャンプのタブもクリックして表示できます。

このちょっとした違い、すごくうれしいですよね。

どうぞお試し下さい。

マクロの解説

「検索と置換」ダイアログボックスを19行目の方法で表示させます。

このようにすると、エラー処理が不要になります。

マクロ


Sub MWM_Replacement2()

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

  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

  Application.CommandBars.FindControl(ID:=313).Execute

End Sub

 

コメント

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

    kinuasaさん、

    毎度ありがとうございます。

    このCommandBar IDという手段をいただきまして、これからのマクロ作りの選択肢・自由度が増えました。

    どうもありがとうございます。

    >今確認してみたら確かにそうですね(^^;
    >気づいていませんでした(笑)

    案外違いがありまして、教えていただいたCommandBar IDの方法がすごくうれしいです。

    違いをこちらにまとめてみました。
    http://ameblo.jp/gidgeerock/entry-11001068484.html

    ありがとうございました。

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

    きぬあさです。

    > ただ、この方法だと、置換のタブが選択されたままで、検索のタブをクリックにて表示できません(お試し下さい)。

    今確認してみたら確かにそうですね(^^;
    気づいていませんでした(笑)

    ちなみにFindControlメソッドで指定しているコントロールのIDは一覧にしたものを私のサイトで公開していますので、よろしければそちらもご参照ください(^^)
    (完璧に網羅しているわけではありませんが、それなりに参考になる資料だと思います。)

    [2003用] http://www.ka-net.org/office/of29.html
    [2007用] http://www.ka-net.org/office/of02.html
    [2010 Beta用] http://www.ka-net.org/office/of16.html
    [2010用] http://www.ka-net.org/office/of28.html

    kinuasa

-コード
-,