VBA入門
ハイパーリンク(Hyperlink)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2026-06-19

第95回.ハイパーリンク(Hyperlink)


マクロVBA ハイパーリンク

VBAでハイパーリンク(Hyperlink)を追加したり削除したりする場合を解説します。
ハイパーリンクは、Hyperlinkオブジェクトです、
そして、Hyperlinkオブジェクトの集まりであるコレクションがHyperlinksコレクションになります。


以下の説明や使用例を読む時、コレクションとオブジェクトが分かりづらいかもしれません。
Hyperlinksは、Hyperlinkのコレクションです。
Hyperlinks(1)は、Hyperlinkオブジェクトです。
簡単に言えば、シートには複数のハイパーリンクが存在します、これがHyperlinksコレクション。
1つのハイパーリンクを特定した時、それがHyperlinkオブジェクトになります。


Hyperlinksコレクション

Hyperlinksコレクションのメソッド、プロパティの一覧

メソッド Add 指定された範囲または図形にハイパーリンクを追加します。
Delete オブジェクトを削除します。
プロパティ Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。
値の取得のみ可能です。
Count コレクションに含まれるオブジェクトの数を表す長整数型 (Long) の値を返します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。長整数型 (Long) の値を使用します。
Item コレクションから単一のオブジェクトを返します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。

セルにハイパーリンクを追加する場合は、Addメソッドを使います。

Addメソッド

式.Add(Anchor, Address, [SubAddress], [ScreenTip], [TextToDisplay])

Anchor 必須
ハイパーリンクのアンカーを指定します。
Range オブジェクトまたは Shape オブジェクトを指定します。
Address 必須
ハイパーリンクのアドレスを指定します。
SubAddress 任意
ハイパーリンクのサブアドレスを指定します。
ScreenTip 任意
ハイパーリンク上をマウス ポインターで指した場合に表示されるヒントを指定します。
TextToDisplay 任意
ハイパーリンクで表示されるテキストを指定します。

TextToDisplayの省略について
セルの値をそのまま表示文字列として使用する場合は、TextToDisplay 引数を省略できます。
ただし、省略した際の挙動はセルのデータ型(中身)によって以下のように異なります。

・数値または数式の場合
引数を省略すると、手動設定時のダイアログにおける「<<ドキュメント内の選択範囲>>」と同じ状態になります。
セルの数値や数式を維持したまま、ハイパーリンクのみを設定できます。

ハイパーリンク(Hyperlink)

・文字列(数式以外)の場合
引数を省略しても、そのセルの文字列を TextToDisplay に明示的に指定した場合と同じ挙動(文字列としてのリンク)になります。


Hyperlinkオブジェクト

Hyperlinkオブジェクトのメソッド、プロパティの一覧です。

メソッド AddToFavorites ブックまたはハイパーリンクへのショートカットを "お気に入り" フォルダーに追加します。
CreateNewDocument 指定したハイパーリンクにリンクされた新しい文書を作成します。
Delete オブジェクトを削除します。
Follow 既にダウンロードしてある場合、キャッシュに格納されたファイルを表示します。
ダウンロードしていない場合、ハイパーリンク先にある目的のファイルをダウンロードし、適切なアプリケーションで表示します。
プロパティ Address 対象ドキュメントのアドレスを示す文字列型 (String) の値を取得、または設定します。
Application 対象となるオブジェクトが指定されない場合は、Excel アプリケーション (Application オブジェクト) を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成した Application オブジェクトを返します。
OLE オートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。
値の取得のみ可能です。
Creator 現在のオブジェクトが作成されたアプリケーションを示す 32 ビットの整数を取得します。
値の取得のみ可能です。
長整数型 (Long) の値を使用します。
EmailSubject 指定されたハイパーリンクのリンク先が電子メールの場合、メールの件名を表す文字列を設定します。
件名はハイパーリンクのアドレスに追加されます。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Name オブジェクトの名前を表す文字列型 (String) の値を返します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。
値の取得のみ可能です。
Range 指定されたハイパーリンクが割り当てられている範囲を表す Range オブジェクトを取得します。
ScreenTip 指定されたハイパーリンクにヒントを設定します。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Shape 指定されたハイパーリンクに結合されている図形を表す Shape オブジェクトを取得します。
SubAddress 指定したハイパーリンク先のドキュメント内の特定の位置を取得または設定します。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
TextToDisplay 指定されたハイパーリンクに表示テキストを設定します。
既定値はハイパーリンクのアドレスです。
値の取得および設定が可能です。
文字列型 (String) の値を使用します。
Type HTML フレームの場所を表す長整数型 (Long) の値を返します。
MsoHyperlinkType クラスの定数を使用します。


ハイパーリンクの追加

以下のサンプルコードにおいて、「セル」には、Rangeオブジェクト(Range("A1")、Cells(1, 1)等)を指定してください。

WEBページやファイルの場合

ActiveSheet.Hyperlinks.Add Anchor:=セル, _
              Address:="URL等/ファイルのフルパス", _
              TextToDisplay:="表示名"

同一ブック内の他シートの場合

ActiveSheet.Hyperlinks.Add Anchor:=セル, _
             Address:="", _
             SubAddress:="'シート名'!A1", _
             TextToDisplay:="表示名"

他ブックのシートの場合

ActiveSheet.Hyperlinks.Add Anchor:=セル, _
             Address:="ブックのフルパス", _
             SubAddress:="'シート名'!A1", _
             TextToDisplay:="表示名"

ハイパーリンク追加時の注意点

シートへのリンクの場合は、シート名をシングルクォート(')で囲みます。

シート名に空白(スペース)や特定の記号が含まれている場合、これがないと正しくハイパーリンクが設定されずエラーになります。
トラブルを防ぐため、シート名を入力する際は常に囲む癖をつけておくと安全です。

注意点(エラー対策)
万が一、シート名自体に最初からシングルクォート(')が含まれている特殊なケースでは、そのままではコードが誤認識されてしまいます。
その場合は、Replace(シート名, "'", "''") のように、シングルクォートを2つ連続('')に置換して指定する必要があります。

ハイパーリンクの制限について

・ハイパーリンクは、シートに設定できる数に上限があります。
・通常の方法では、#を含むファイルパスはハイパーリンクを作成できません。

これらの制限については、以下を参照してください。
VBA100本ノック 26本目:ファイル一覧作成
・出題 ・頂いた回答 ・解説 ・補足 ・サイト内関連ページ


ハイパーリンクの削除

特定セルのハイパーリンクを削除

セル.Hyperlinks.Delete

セルはRangeオブジェクトを指定
複数セルの範囲を指定できます。

シートのハイパーリンクを全て削除

シート.Hyperlinks.Delete 

シートはWorkSheetオブジェクトを指定します。


既に設定されているハイパーリンクの扱い方

指定セルの隣に、ハイパーリンクのアドレスを書き出す
With Cells(1, 1)
  .Offset(0, 1) = .Hyperlinks(1).Address
End With

Hyperlinks(1)
これが解りづらいのですが、
Rangeオブジェクトはコレクションでもあります。
Hyperlinksコレクションの指定になっているので、要素の特定が必要になっています。
が、しかし、
当然先頭要素しかありえないので、ここでは常に(1)になります。

Hyperlinks(1)
これが解りづらいのですが、Excelの仕様上、1つのセルの中に設定できるハイパーリンクは最大1つだけです。
しかし、VBAの構造としては「セル(Rangeオブジェクト)の中に、ハイパーリンクの集まり(Hyperlinksコレクション)が含まれている」という形をとっているため、たとえ中身が1つしかなくても「何番目のハイパーリンクか」をインデックス番号で指定する必要があります。
そのため、単一のセルを対象にしている限り、中身は1つ(先頭の要素)しかあり得ないため、常に (1) を指定することになります。

したがって、対象が Range("A1:A5") のように「複数セルの範囲」になっていると、その範囲内にある1番目のハイパーリンクという意味に変わります。
コードを書く際は、対象が単一セル(Cells や要素を絞った Range)になっているか確認しましょう。

指定図形の左上のセルの隣に、ハイパーリンクのアドレスを書き出す
With ActiveSheet.Shapes("四角形 1")
  .TopLeftCell.Offset(0, 1) = .Hyperlink.Address
End With

こちらは、Shapeオブジェクト内のHyperlinkオブジェクトです。


以下も参考にして下さい。
ユーザー定義関数でハイパーリンクのURLを取得

ネットから、何らかの一覧をエクセルにコピペすると、文字列や画像等に、リンクの設定がくっついてきます。URLが表記されていれば良いですが、表示されていない事の方が多いでしょう。そこで、VBAでユーザー定義関数を作成し、URLを取得できるようにします。

練習問題26(全シート処理とハイパーリンク)
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ




同じテーマ「マクロVBA入門」の記事

第92回.名前定義(Names)
第93回.ピボットテーブル(PivotTable)
第94回.コメント(Comment)
第95回.ハイパーリンク(Hyperlink)
第96回.グラフ(Chart)
第97回.図形オートシェイプ(Shape)
第136回.フォームコントロール
第137回.ActiveXコントロール
第98回.Findメソッド(Find,FindNext,FindPrevious)
第99回.Replaceメソッド(置換)
第132回.その他のExcel機能(グループ化、重複の削除、オートフィル等)


新着記事NEW ・・・新着記事一覧を見る

「Python in Excel」数独(ナンプレ)解法プログラムの移植と最適化|エクセル関数応用(2026-08-14)
「Python in Excel」で自作関数を登録|アンピボット関数と計算順序|エクセル関数応用(2026-08-12)
ListBox・ComboBoxをマウスホイール対応させる|ユーザーフォーム入門(2026-08-09)
VBA モジュールエクスポートツール|モジュールを選別して一括出力|VBAサンプル集(2026-08-06)
「SUMIFSで動くのにXLOOKUPでエラー?」型不一致の関数別挙動|エクセル関数応用(2026-08-03)
生成AIが暴いた「VBAオワコン説」の盲点|問われるのは言語ではなく評価軸|エクセル雑感(2026-07-04)
【ITとは何か】Excel・VBAを学ぶ前に知っておきたい「4つの本質」|エクセル雑感(2026-06-24)
2つのシート名を交換するVBAをGeminiに作らせてみた。|VBA技術解説(2026-05-22)
ヘッダーに合わせて列をソートして値貼り付けするスマートな方法|VBAサンプル集(2026-05-20)
4大分岐関数の使い分け(IF/IFS/SWITCH/CHOOSE)|エクセル入門(2026-05-19)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロとは?VBAとは?VBAでできること|VBA入門
8.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ