【コード】「検索と置換」ダイアログボックスを表示させる(けっこう重要)

これは、きぬあささん から教えていただいたコードを少し詳しく解説するコーナーです。

通常、Word VBAで「検索と置換」ダイアログボックスを表示させようと思うと、組み込みのダイアログボックスを表示させる方法を思い浮かべます。

ところが、組み込みのダイアログボックスを用いなくてもダイアログボックスを表示させる方法があったのですね。しかも、もっと使いやすい方法で!!

コマンドバー(CommandBar)のIDを使って指定します。

特に、なぜか理由はわかりませんが、「検索と置換」ダイアログボックスについては、組み込みのダイアログボックスが非常に使いにくいので、このコマンドバーIDを使って指定する方法がいいですね。

(後日追記)以下の記事で具体的なコードを紹介しています。

コードの比較

以下、「検索と置換」ダイアログボックスで、置換のタブを表示するコードです。

(1)組み込みのダイアログボックスのコード

Dialogs(wdDialogEditReplace).Show

(2)CommandBar IDを用いたコード

CommandBars.FindControl(ID:=313).Execute

何が違うのか?

(1)のコードで実行した場合のデメリットを書くことになるのですが、そういう観点からの比較です。

・タブをクリックできない!?

(1)の方法だと、「検索」と「ジャンプ」のタブをクリックして選択することができません。

(1)組み込みのダイアログボックスのコードの場合の表示

Dialogs(wdDialogEditReplace).Show

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

(2)CommandBar IDを用いたコードの場合の表示

CommandBars.FindControl(ID:=313).Execute

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

・押せないはずのボタンが押せる!?

(1)の方法だと、通常では押せないはずのボタンが押せる状態になってしまいます。

通常では、文字列が入力されていない場合には、「検索と置換」ダイアログボックスのボタンはクリックできないのに。。。

ということで、ついうっかり押してしまうと、エラーになるんですね。まるでトラップです。だまされてはいけません。

よって、使うときには、エラー処理を施す必要がでてくるわけです。

(1)組み込みのダイアログボックスのコードの場合の表示

Dialogs(wdDialogEditReplace).Show

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

(2)CommandBar IDを用いたコードの場合の表示

CommandBars.FindControl(ID:=313).Execute

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

・検索条件が見えない!?

実は、上の2つの画像でもわかるのですが、同じ検索条件に設定されているのに、組み込みのダイアログボックスを使うと、検索条件が表示されません。

以下のようにオプションボタンをクリックするとわかります。

実は、「あいまい検索」の設定なんですよ。なのに、表示されていませんね。

(1)組み込みのダイアログボックスのコードの場合の表示

Dialogs(wdDialogEditReplace).Show

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

まとめ

これからは、「検索と置換」に関しては、CommandBar IDで指定する方法がよいですね。

他のコマンドでもこのようなことがあるかもしれませんのでご注意を。

非常に有益な情報のシェアをどうもありがとうございました。

それにしても、きぬあささんのサイトは、宝の山ですね。

このCommandBar IDを公開されていることは存じておりましたが、今回、その利用価値を理解いたしました。非常にありがたい情報のご提供でした。

トップへ戻る