----------------------------------------
この記事を新しいサイトに転記しました
----------------------------------------
これは、きぬあささん
から教えていただいたコードを少し詳しく解説するコーナーです。
通常、Word VBAで「検索と置換」ダイアログボックスを表示させようと思うと、組み込みのダイアログボックスを表示させる方法を思い浮かべます。
ところが、組み込みのダイアログボックスを用いなくてもダイアログボックスを表示させる方法があったのですね。しかも、もっと使いやすい方法で!!
コマンドバー(CommandBar)のIDを使って指定します。
特に、なぜか理由はわかりませんが、「検索と置換」ダイアログボックスについては、組み込みのダイアログボックスが非常に使いにくいので、このコマンドバーIDを使って指定する方法がいいですね。
▼コードの比較
以下、「検索と置換」ダイアログボックスで、置換のタブを表示するコードです。
(1)組み込みのダイアログボックスのコード
Dialogs(wdDialogEditReplace).Show
(2)CommandBar IDを用いたコード
CommandBars.FindControl(ID:=313).Execute
▼何が違うのか?
(1)のコードで実行した場合のデメリットを書くことになるのですが、そういう観点からの比較です。
・タブをクリックできない!?
(1)の方法だと、「検索」と「ジャンプ」のタブをクリックして選択することができません。
(1)組み込みのダイアログボックスのコードの場合の表示
Dialogs(wdDialogEditReplace).Show
(2)CommandBar IDを用いたコードの場合の表示
CommandBars.FindControl(ID:=313).Execute
・押せないはずのボタンが押せる!?
(1)の方法だと、通常では押せないはずのボタンが押せる状態になってしまいます。
通常では、文字列が入力されていない場合には、「検索と置換」ダイアログボックスのボタンはクリックできないのに。。。
ということで、ついうっかり押してしまうと、エラーになるんですね。まるでトラップです。だまされてはいけません。
よって、使うときには、エラー処理を施す必要がでてくるわけです。
(1)組み込みのダイアログボックスのコードの場合の表示
Dialogs(wdDialogEditReplace).Show
(2)CommandBar IDを用いたコードの場合の表示
CommandBars.FindControl(ID:=313).Execute
・検索条件が見えない!?
実は、上の2つの画像でもわかるのですが、同じ検索条件に設定されているのに、組み込みのダイアログボックスを使うと、検索条件が表示されません。
以下のようにオプションボタンをクリックするとわかります。
実は、「あいまい検索」の設定なんですよ。なのに、表示されていませんね。
(1)組み込みのダイアログボックスのコードの場合の表示
Dialogs(wdDialogEditReplace).Show
▼まとめ
これからは、「検索と置換」に関しては、CommandBar IDで指定する方法がよいですね。
他のコマンドでもこのようなことがあるかもしれませんのでご注意を。
非常に有益な情報のシェアをどうもありがとうございました。
それにしても、きぬあささんのサイトは、宝の山ですね。
このCommandBar IDを公開されていることは存じておりましたが、今回、その利用価値を理解いたしました。非常にありがたい情報のご提供でした。
▼関連記事
CommandBar ID 一覧(Office 2003)
(きぬあささん)
CommandBar ID 一覧(Office 2007)
(きぬあささん)
CommandBar ID 一覧(Office 2010)
(きぬあささん)
「検索と置換」ダイアログボックスに文字列を表示させるマクロ
「検索と置換」ダイアログボックスに文字列を表示させるマクロ(その2)