分12コンテキストメニューへメニューアイテムの追加Wordのコンテキストメニューに検索結果を示すメニューアイテムを追加する処理を書きます。最初にインポートの設定をしておきます。Microsoft.Office.CoreThisDocumentクラスには,右クリックされたとき既定の処理をする前に発生するBeforeRightClickイベントがあるので,これを利用します。イベント⁠)⁠」を選択し,右上のドロップダウンリストから「BeforeRightClick」を選択すると次のようにイベントハンドラのコードがクラスに追加されます。Subこのイベントハンドラ内に処理を追加していきます。文書で選択されているテキストはパラメータeにより取得できます。実際には,テキストが選択されていない状態でもカーソルの右側にある文字が1文字格納されています。そのため,選択文字列の先頭と末尾の空白を削除した後に2文字以上ある場合,検索することにします。IfOfficeのメニューアイテムやツールバーのボタンなどのコントロール群はすべてCommandBarオブジェクトから成っています(※1⁠)⁠。コンテキストメニューにメニューアイテムを追加するためには,コンテキストメニューを成すCommandBarオブジェクトを取得し,これが持つCommadBarControlコレクションに新たなメニューアイテムを追加します。メニューアイテムのCommadBarButtonオブジェクトに適切な値を設定するという手順になります。文書を右クリックしたとき表示される標準のコンテキストメニューのCommandBarsオブジェクトの取得は次のようになります。Application.CommandBars("Text")作成したSearchメソッドにより検索結果を取得し,結果件数分だけメニューアイテムを作成しコンテキストメニューに追加します。CommandBarButton_ClickNexttextCommandBar.Controls.Addメソッドの第1引数にMsoControlType.msoControlButtonを指定し,戻り値が追加されたCommandBarButtonオブジェクトになります。第4引数のTrueは一時的なコントロールであることを指定しています。メニューアイテムのキャプションにはタイトルをそのまま表示し,URLを開くときに必要になるURLの文字列はTagプロパティを利用して記憶させておきます。AddHandlerステートメントを使いメニューアイテムのClickイベントをCommandBarButton_Clickプロシージャに関連付けています。プロシージャはこの後に作成します。Clickイベントに関連付けるプロシージャは次のようになります。Ctrl.TagにはURLを入れてありますので,Process.Startメソッドを使用してURLに関連付いているアプリケーションを起動します。Subこのまま実行すると右クリックするたびにメニューアイテムが追加されてしまいます。コンテキストメニューのCommandBarsオブジェクトを取得した後にResetメソッドを使い元の状態に戻しておきます。以上のコードを以下にまとめましたので参考にしてください。例外処理も追加してあります。ThisDocument.vbのダウンロードThisDocument.vbファイル実行して図4のように選択したテキストの検索結果がメニューに表示されれば完成です。クリックするとそのWebサイトに移動します。いかがでしたでしょうか。実行結果このテンプレートを配布する場合は,ソリューションエクスプローラでプロジェクト名を右クリックし,メニューの「発行」を選択します。すると,ウィザードによりセットアッププログラムsetup.exeの作成ができます(※2⁠)⁠。セットアッププログラムに含めるコンポーネントなどの設定はプロジェクトのプロパティの発行タブから可能です。2007からはツールバーはなくなり,リボンという新しいUIが登場しています。コマンドバーは古くから互換性のために残されているレガシーなオブジェクトと思われます。※2ウィザードの規定のインストールパスの指定で「CD-ROMまたはDVD-ROMから」を選びます。インストール先のコンピュータでsetup.exe実行後に作成したテンプレートのLiveSearchWordTemplate.dotxが開けるようになります。有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。