PR

【ExcelVBA】VBAでハイパーリンクを設定する方法

ExcelVBA-ハイパーリンクの設定-アイキャッチ その他

エクセルのVBAでハイパーリンクを設定する方法について説明しています。

スポンサーリンク

ハイパーリンクの設定とは

ハイパーリンクとは、セルや図形をクリックしたときに指定したWebページやブック内のセルへ移動することができる機能です。

ハイパーリンクが設定されているとセル内の文字が青字で下線が引かれていて、クリックするとリンク先のURLがブラウザで開いたり、選択しているセル位置がジャンプしたりします。

ExcelVBA-ハイパーリンクの設定-イメージ

手動で設定するときはセルの上で右クリックしたときのメニューで「リンク」を選択します。

ExcelVBA-ハイパーリンクの設定-右クリックメニュー

「リンク」をクリックすると「ハイパーリンクの挿入」のウィンドウが表示されてここでWebページのURLを入力したり、リンク先の情報や表示文字列などが設定できます。

今回は実務でわりとよく使用するWebページのリンクの設定と「このドキュメント内」というブック内の別のシートへリンクを行う方法を紹介します。

ExcelVBA-ハイパーリンクの設定-ハイパーリンク設定-URL
スポンサーリンク

マクロでWebページへのハイパーリンクを設定する

VBAでハイパーリンクを設定する場合は「Hyperlinks.Add メソッド」を使用します。

構文は↓のように記述します。
AnchorとAddressは必須で、後ろ3つはオプションとして任意で指定が可能です。

対象のオブジェクト.Add (AnchorAddressSubAddressScreenTipTextToDisplay)

名前必須/省略可データ型説明
Anchor必須Objectハイパーリンクのアンカーを指定。 Range オブジェクトまたは Shape オブジェクトを指定。
Address必須Stringハイパーリンクのアドレスを指定。※URLへのリンク時に使用
SubAddress省略可Variantハイパーリンクのアドレスを指定。※ブック内のリンク時に使用
ScreenTip省略可Variantマウス ポインターを合わせた時に表示されるヒントを指定。
TextToDisplay省略可Variant表示されるテキストを指定。

VBAでハイパーリンクの設定をしたい場合は、1カ所だけではなくて連続する表データなどに一括で設定したいケースが多いと思います。

サンプルマクロの例として、このWebページの記事タイトルとURLがある表を使ってタイトルをクリックしたら記事のWebページを開くようにハイパーリンクを設定していきたいと思います。

ExcelVBA-ハイパーリンクの設定-URLのリンク設定前の状態

B列の3行目~7行目までのタイトルの文字にリンクを設定していくのでForループで行の繰り返しを使用しています。リンク先はC列のURLを使用します。

ActiveSheet.Add (Anchor:=Range(“B” & r)Address:=Range(“C” & r))

AnchorはB列の繰り返しの行を指定して、AddressはC列の繰り返しの行を指定しています。

Sub sample1()

  Dim r As Integer
  Dim LastRow As Integer
  Dim HLink  As Hyperlink
 
  '最終行を取得
  LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
  
  '3行目から最終行まで繰り返し
  For r = 3 To LastRow
  
    'B列にハイパーリンクの設定(C列のURLをセット)
    Set HLink = ActiveSheet.Hyperlinks.Add(Anchor:=Range("B" & r), Address:=Range("C" & r))
    
  Next r

End Sub

▽マクロ実行後
 B列のタイトルにリンクが設定されて、クリックすると設定したブラウザでURLが開くようになりました。

ExcelVBA-ハイパーリンクの設定-URLのリンク設定後の状態
スポンサーリンク

マクロでブック内他のシートにハイパーリンクを設定する

次はブック内の別のシートにジャンプするリンクを設定していきます。

「見出し」というシートに4月~9月までの行があります。
B2セルの「4月」という文字をクリックしたら「4月」シートを表示、B3セルの「5月」という文字をクリックしたら「5月」シートへと各月のシートへジャンプするリンクをマクロで設定していきたいと思います。

ExcelVBA-ハイパーリンクの設定-ブック内のリンク設定前の状態

AnchorはB列に設定します。Adressは空欄にしておきます。SubAdressでB列のシート名のA1セルを指定します。

ActiveSheet.Hyperlinks.Add(Anchor:=Range(“B” & r), Address:=””, SubAddress:=”‘” & Range(“B” & r) & “‘!A1”)

Sub sample2()

  Dim r As Integer
  Dim LastRow As Integer
  Dim HLink  As Hyperlink
 
  '最終行を取得
  LastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
  
  '2行目から最終行まで繰り返し
  For r = 2 To LastRow
  
    'B列にハイパーリンクの設定(B列のシート名のA1セル)
    Set HLink = ActiveSheet.Hyperlinks.Add(Anchor:=Range("B" & r), Address:="", SubAddress:="'" & Range("B" & r) & "'!A1")
    
  Next r

End Sub

▽マクロ実行後
4月~9月までのセルにハイパーリンクが設定されました。

ExcelVBA-ハイパーリンクの設定-ブック内のリンク設定後の状態

「4月」のセルをクリックすると「4月」シートへジャンプしました。

ExcelVBA-ハイパーリンクの設定-ブック内のリンクをクリックした状態
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

タイトルとURLをコピーしました