エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く_Plus

Excel VBA ハイパーリンク

2024年9月に投稿した「エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く」では文字検索と同時にファイル名にハイパーリンクを設定したので、ファイル名をクリックすると文字が見付かったワード文書を開く事ができました。

しかし、この設定では、ファイル名をクリックすれば目的の文字を含むワード文書を選択できますが、その文字が含まれるページを選択することはできませんでした。

そこで今回はハイパーリンクを設定したテキストをクリックした場合に動作する「Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)」を使用して、目的の文字のあるページを選択できるようにしたいと思います。

エクセルの「開発」タブ →「Visual Basic」でVBE(Visual Basic Editor)の画面を表示し、Sheet1をダブルクリックしてコードウィンドウを開き、次のコードをコピーして貼り付けます。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Dim word_App As Object 'オブジェクト型変数宣言。
Dim word_Doc As Object 'オブジェクト型変数宣言。
Dim Page_number As Integer

Set word_App = GetObject(, "Word.Application") '開いているWordアプリを取得しその参照情報を「word_App」に格納します。

Set word_Doc = word_App.ActiveDocument 'アクティブなWord文書を取得しその参照情報を「word_Doc」に格納します。

Page_number = ActiveCell.Offset(0, 1).Value 'クリックしたセルの一つ右のセルの値を「Page_number」に格納します。

word_App.Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=Page_number '文書のページ選択処理をします。

End Sub

これで「エクセルVBAでフォルダ内のワード文書の文字を検索してハイパーリンクで開く」のプログラムでエクセルシートA列のハイパーリンクの設定されたファイル名をクリックすると、ワード文書が開いて目的の文字のあるページを表示することができるようになりました。

今回のポイント

FollowHyperlinkはハイパーリンク部分のみクリックした場合にイベントが実行されるので、SelectionChangeを使うより正確な処理が可能になります。

コメント