2024年9月に投稿した「エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く」では文字検索と同時にファイル名にハイパーリンクを設定したので、ファイル名をクリックすると文字が見付かったワード文書を開く事ができました。
しかし、この設定では、ファイル名をクリックすれば目的の文字を含むワード文書を選択できますが、その文字が含まれるページを選択することはできませんでした。
そこで今回はハイパーリンクを設定したファイル名をクリックしたときに動作する「Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)」を使用して、目的の文字のあるページを表示できるようにしたいと思います。
先ずは「エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く」のエクセルファイルを開きます。

エクセルの「開発」タブ →「Visual Basic」でVBE(Visual Basic Editor)の画面を表示し、Sheet1をダブルクリックしてコードウィンドウを開き、次のコードをコピーして貼り付けます。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim Word_Appli As Object 'オブジェクト型変数宣言。
Dim Word_Docum As Object 'オブジェクト型変数宣言。
Dim Page_number As Integer
Set Word_Appli = GetObject(, "Word.Application") '開いているWordアプリを取得し参照情報を「Word_Appli」に格納します。
Set Word_Docum = Word_Appli.ActiveDocument 'アクティブなWord文書を取得し参照情報を「Word_Docum」に格納します。
Page_number = ActiveCell.Offset(0, 1).Value 'クリックしたセルの一つ右のセルの値を「Page_number」に格納します。
Word_Appli.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=Page_number '文書のページを選択処理します。
Word_Appli.WindowState = 2 'Wordウィンドウをアクティブにしたとき最前面に表示されるようWordウィンドウを一度最小化する。
Word_Appli.WindowState = 1 'Wordウィンドウを最大化します。
Word_Appli.Visible = True 'Wordアプリケーションを画面上に目に見える状態にする。
Word_Appli.Activate 'Wordウィンドウをアクティブ(最前面)にします。
Set Word_Appli = Nothing 'メモリの解放。
Set Word_Docum = Nothing 'メモリの解放。
End Sub
そしてエクセルのシート1を表示して「開発タブ」 →「マクロの表示」ボタン → マクロ名「エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く」を選択 → [実行] ボタンを押してプログラムを実行します。
エクセルシートA列にハイパーリンクの設定されたファイル名が表示されるのでクリックすると、ワード文書が開き「Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)」が働いて目的の文字のあるページを表示することができるようになりました。
ワード文書を開くとき「Word_Appli.Activate」だけではタスクバーのワードのアイコンが点滅するだけで画面が最前面に切り替わらないときがあるので「Word_Appli.WindowState = 2」で一度ワードウインドウを最小化して、「Word_Appli.WindowState = 1」でもう一度最大化に戻す動作をさせることで、確実にワードウインドウを最前面に表示することができます。

