Excelのハイパーリンクはとても便利な機能ですね。
けれど、セルに書かれているURLやファイルパスに対してハイパーリンクを設定する場合は
一つづつ手動で操作しなければならないので、
たくさん設定しなければいけないときは面倒ですし、時間もかかりますね。
そこで今回は、そんなお悩みを解決する、
VBAでExcelのハイパーリンクを一括して設定する方法をご紹介します!
もくじ
ハイパーリンク登録マクロとサンプルデータを用意する
ハイパーリンク登録マクロとサンプルデータを用意しましょう。
サンプルデータは2つのURLとExcelファイルとPDFファイルのパスを入力しました。
登録するマクロは以下の通りです。
Sub ハイパーリンク一括登録()
Dim objHyperlink
For Each objHyperlink In Selection
If objHyperlink.Value <> "" Then
ActiveSheet.Hyperlinks.Add Anchor:=objHyperlink, Address:=objHyperlink.Value
End If
Next
End Sub
Selectionプロパティでは、選択している範囲をオブジェクトとして取得します。
例えば、A1セルを選択していればSelectionプロパティはRange(“A1”)となり、
A1~A5のセル範囲を選択していればSelectionプロパティはRange(“A1:A5”)を指すことになります。
そのSelectionプロパティから取得したオブジェクト郡を、ForEachで一件づつ取り出し、Hyperlinks.Add メソッドでハイパーリンクを付与させます。
Hyperlinks.Add メソッドの構文は以下の通りです。
構文
Hyperlinks.Add (Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Anchor | 必須 | Object | ハイパーリンクのアンカーを指定します。 Range オブジェクトまたは Shape オブジェクトを指定します。 |
Address | 必須 | String | ハイパーリンクのアドレスを指定します。 |
SubAddress | Optional | Variant | ハイパーリンクのサブアドレスを指定します。 |
ScreenTip | Optional | Variant | ハイパーリンク上をマウス ポインターで指した場合に表示されるヒントを指定します。 |
TextToDisplay | Optional | Variant | ハイパーリンクで表示されるテキストを指定します。 |
参考:https://docs.microsoft.com/ja-jp/office/vba/api/excel.hyperlinks.add
マクロを登録しましょう
①[Alt] + [F11]を押下してVBAのコンソールを開きます。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のマクロを入力します。
はい、ここで登録完了です。
マクロを実行する
続いて登録したマクロを実行し、ハイパーリンク一覧を一括オープンしたいと思います。
①ハイパーリンクにしたいセルを複数選択します。
②[開発]タブ、[マクロ]を押下してマクロ一覧画面を開きます。
③「ハイパーリンク一括登録」を選択し、「実行」をクリックします。
はい、ハイパーリンクが設定できましたね。
マクロをボタンから実行しましょう
次にいちいちタブからマクロを実行するのは少々面倒ですので、
登録したマクロをボタンから実行したいと思います。
①「開発」タブ>「挿入」>左上のボタンをクリックします。
②マクロを登録します。「ハイパーリンク一括登録」を選択し、「OK」をクリックします。
②はい、挿入されましたね。ボタンの名称やサイズも変えましょう。
③ハイパーリンクにしたいセルを選択し、ボタンを押してみましょう。
はい、前と同様にハイパーリンクが一括設定できましたね。
また、範囲指定でも、2番目と5番目など個別選択のパターンでも同じように開くことが可能です。
操作は「Ctrl」を押しながらセルをクリックします。
実行してみましょう。
はい、部分的にハイパーリンクを設定することができましたね。
さいごに
いかがでしょうか。
ハイパーリンク設定は現場で使う機会が多いかと思いますので、
今回の方法で効率化してみてはいかがでしょうか。
この記事を拝見して作業効率が上がりました。
ありがとうございました。