【VBA】ハイパーリンクの設定と取得【Hyperlinksを使う】

Excel VBAで、ハイパーリンクの設定と取得について、ご紹介します。ハイパーリンクの設定や取得は、「Hyperlinks」を使います。ハイパーリンクの設定と取得は、手動ですると手間ですので、VBAで自動化できると便利です。具体的なVBAコードを使って、解説していきます。
はじめに
この記事では、ハイパーリンクの設定と取得について、ご紹介します。
ハイパーリンクの設定には、「Hyperlinks.Add」を使います。
反対に、ハイパーリンクの値を取得するには、「Hyperlinks」を使います。
VBAでハイパーリンクの設定を自動化できると、手間な設定から解放されて、作業を効率化できます。
では、ハイパーリンクの設定と取得について、解説していきます。
この記事で紹介すること
- ハイパーリンクの設定
- ハイパーリンクの削除
- ハイパーリンクの取得
- ハイパーリンクを開く
目次
VBAでハイパーリンクを設定
VBAで、ハイパーリンクを設定する方法について、ご紹介します。
Hyperlinks.Addを使う
ハイパーリンクを設定するには、「Hyperlinks.Add」を使います。
入力は、次のようにします。
「シート.Hyperlinks.Add Anchor:=セル範囲, Address:=フルパスのリンク」
ハイパーリンク先をエクセルに設定する場合で、シートまで設定する場合は、次のように入力します。
「シート.Hyperlinks.Add Anchor:=セル範囲, Address:=フルパスのリンク, SubAddress:='シート名'!セル範囲」
という感じです。
では、いくつかのパターンで、ハイパーリンクを設定してみます。
Webサイトへのハイパーリンク
Webサイトへのハイパーリンクを作成してみます。
Sub TEST1()
With ActiveSheet
'Webサイトへの、ハイパーリンクの設定
.Hyperlinks.Add anchor:=.Cells(1, 1), _
Address:="https://www.yahoo.co.jp"
End With
End Sub
では、実行してみます。
Webサイトへのハイパーリンクを設定

では、クリックしてみます。
ハイパーリンクでWebサイトを開く

「Yahoo」のWebサイトが表示されました。
フォルダへのハイパーリンク
フォルダへのハイパーリンクを作成してみます。
Sub TEST2()
With ActiveSheet
'フォルダへの、ハイパーリンクの設定
.Hyperlinks.Add anchor:=.Cells(1, 1), _
Address:="C:\TEST"
End With
End Sub
では、実行してみます。
フォルダへのハイパーリンクを設定

では、クリックしてみます。
ハイパーリンクでフォルダを開く

「TEST」のフォルダが表示されました。
別ブックへのハイパーリンク
別ブックへのハイパーリンクを作成してみます。
Sub TEST3()
With ActiveSheet
'別ブックへの、ハイパーリンクの設定
.Hyperlinks.Add anchor:=.Cells(1, 1), _
Address:="C:\TEST\TEST.xlsx"
End With
End Sub
では、実行してみます。
フォルダへのハイパーリンクを設定

では、クリックしてみます。
ハイパーリンクで別ブックを開く

「TEST.xlsx」のブックが表示されました。
別シートへのハイパーリンク
別ブックで別シートへのハイパーリンクを作成してみます。
エクセルのシートまでを指定する場合は、「SubAddress」を使います。
Sub TEST4()
With ActiveSheet
'別シートへの、ハイパーリンクの設定
.Hyperlinks.Add anchor:=.Cells(1, 1), _
Address:="C:\TEST\TEST.xlsx", _
SubAddress:="'Sheet2'!B3"
End With
End Sub
では、実行してみます。
フォルダへのハイパーリンクを設定

では、クリックしてみます。
ハイパーリンクで別ブックの別シートを開く

「TEST.xlsx」の「Sheet2」が表示されて、セル「B3」に移動しています。
同ブックの別シートへのハイパーリンク
同ブックの別シートへのハイパーリンクを作成してみます。
同ブック内にハイパーリンクを作成する場合は、「Address」の値を、空白""に設定します。
Sub TEST5()
With ActiveSheet
'同ブックの別シートへの、ハイパーリンクの設定
.Hyperlinks.Add anchor:=.Cells(1, 1), _
Address:="", _
SubAddress:="'Sheet2'!B3"
End With
End Sub
では、実行してみます。
フォルダへのハイパーリンクを設定

では、クリックしてみます。
ハイパーリンクで同ブックの別シートを開く

同ブックの「Sheet2」へ移動して、セル「B3」がアクティブになっています。
VBAでハイパーリンクを削除
次は、ハイパーリンクを削除する方法です。
Hyperlinks.Deleteを使う
ハイパーリンクの削除には、「Hyperlinks.Delete」を使います。
一つのハイパーリンクを削除する方法と、シート内のハイパーリンクを削除する方法があります。
ハイパーリンクを削除
まず、セルA1に設定された、ハイパーリンクを削除してみます。
Sub TEST6()
'一つのハイパーリンクを削除
ActiveSheet.Cells(1, 1).Hyperlinks.Delete
End Sub
セルA1にハイパーリンクが設定された、シートを用意しました。
ハイパーリンクが設定されたセル

では、実行してみます。
セルのハイパーリンクを削除

セルA1のハイパーリンクを、削除することができました。
シート内のハイパーリンクを削除
続いて、シート内のすべてのハイパーリンクを、削除してみます。
Sub TEST7()
'シート内のすべてのハイパーリンクを削除
ActiveSheet.Hyperlinks.Delete
End Sub
1つのシーと内に、複数のハイパーリンクを設定しました。
複数ハイパーリンクが設定されたシート

では、VBAコードを実行して、シート内のハイパーリンクをすべて削除してみます。
シート内のハイパーリンクを削除

1つのシート内のハイパーリンクを、すべて削除できました。
VBAでハイパーリンクの値を取得
次は、ハイパーリンクが設定されたセルから、ハイパーリンクの値を取得する方法です。
ハイパーリンクが設定されたセルから、値を取得するには、「Hyperlinks」を使います。
アドレスを取得
ハイパーリンクのアドレスを、セルから取得するVBAコードです。
Sub TEST8()
'ハイパーリンクの「アドレス」を取得
a = ActiveSheet.Cells(1, 1).Hyperlinks(1).Address
Debug.Print a
End Sub
セルに別ブック「C:\TEST\TEST.xlsx」へのハイパーリンクを設定しました。
ハイパーリンクが設定されたセル

では、ハイパーリンクのアドレスを取得してみます。
ハイパーリンクの「アドレス」を取得

ハイパーリンクのアドレス「C:\TEST\TEST.xlsx」を取得できました。
サブアドレスを取得
次は、ハイパーリンクのサブアドレスを取得してみます。
Sub TEST9()
'ハイパーリンクの「サブアドレス」を取得
a = ActiveSheet.Cells(1, 1).Hyperlinks(1).SubAddress
Debug.Print a
End Sub
セルに別ブックの別シート「C:\TEST\TEST.xlsx - 'Sheet2'!B3」へのハイパーリンクを設定しました。
ハイパーリンクが設定されたセル

では、ハイパーリンクのサブアドレスを取得してみます。
ハイパーリンクの「サブアドレス」を取得

ハイパーリンクのサブアドレスを取得できました。
シート内のハイパーリンクを取得
次は、シート内のすべてのハイパーリンクを取得してみます。
Sub TEST10() 'シート内のハイパーリンクをループ For Each a In ActiveSheet.Hyperlinks 'ハイパーリンクのアドレスを取得 Debug.Print a.Address Next End Sub
「For Each」を使ってコレクションは「ActiveSheet.Hyperlinks」とします。
ハイパーリンクを複数のセルに設定しました。
複数のハイパーリンクを設定

では、実行してみます。
シート内のハイパーリンクを取得

シート内のすべてのハイパーリンクを取得できました。
「For」と「Count」でも取得できます
次のように「For」と「Count」を使ってもできます。
Sub TEST11() With ActiveSheet 'シート内のハイパーリンクをループ For i = 1 To .Hyperlinks.Count 'ハイパーリンクのアドレスを取得 Debug.Print .Hyperlinks(i).Address Next End With End Sub
では、実行してみます。

シート内のすべてのハイパーリンクを取得できました。
ハイパーリンクのセル範囲を取得
シート内で、すべてのハイパーリンクのセル範囲を取得することもできます。
Sub TEST12() 'シート内のハイパーリンクをループ For Each a In ActiveSheet.Hyperlinks 'ハイパーリンクのセル範囲を取得 Debug.Print a.Range.Address Next End Sub
ポイントは、「.Range.Address」とするところです。
シート内に複数のハイパーリンクを設定しました。
複数のハイパーリンクを設定

では、実行してみます。
ハイパーリンクのセル範囲を取得

ハイパーリンクのセル範囲を取得できました。
VBAでハイパーリンクを開く
ちなみに、VBAでハイパーリンクを開くこともできます。
クリックだけではなくて、VBAコードからもハイパーリンクを開けるということです。
Hyperlinks(1).Followを使う
VBAで、ハイパーリンクを開くには、「Hyperlinks(1).Follow」を使います。
入力の仕方は、
「セル範囲.Hyperlinks(1).Follow」
というように、入力します。
VBAでハイパーリンクを開く
では、VBAでハイパーリンクを開いてみます。
Sub TEST13()
'ハイパーリンクを開く
ActiveSheet.Cells(1, 1).Hyperlinks(1).Follow
End Sub
別ブックへの、ハイパーリンクを設定したセルを用意しました。
ハイパーリンクが設定されているセル

では、実行してみます。
VBAでハイパーリンクを開く

ハイパーリンクが実行されて、自動的に別ブックが開かれました。
こんな感じで、VBAからハイパーリンクを開くこともできます。
おわりに
この記事では、ハイパーリンクの設定と取得について、ご紹介しました。
ハイパーリンクの設定には、「Hyperlinks.Add」を使います。
反対に、ハイパーリンクの値を取得するには、「Hyperlinks」を使います。
ハイパーリンクの設定を手動ですると、結構、面倒だったりするので、VBAを使うと効率化できます。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。
関連する記事から探す