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

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メソッド
| Anchor | 必須 ハイパーリンクのアンカーを指定します。 Range オブジェクトまたは Shape オブジェクトを指定します。 |
| Address | 必須 ハイパーリンクのアドレスを指定します。 |
| SubAddress | 任意 ハイパーリンクのサブアドレスを指定します。 |
| ScreenTip | 任意 ハイパーリンク上をマウス ポインターで指した場合に表示されるヒントを指定します。 |
| TextToDisplay | 任意 ハイパーリンクで表示されるテキストを指定します。 |
TextToDisplayの省略について
ただし、省略した際の挙動はセルのデータ型(中身)によって以下のように異なります。
セルの数値や数式を維持したまま、ハイパーリンクのみを設定できます。

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 クラスの定数を使用します。 |
ハイパーリンクの追加
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)になります。
これが解りづらいのですが、Excelの仕様上、1つのセルの中に設定できるハイパーリンクは最大1つだけです。
しかし、VBAの構造としては「セル(Rangeオブジェクト)の中に、ハイパーリンクの集まり(Hyperlinksコレクション)が含まれている」という形をとっているため、たとえ中身が1つしかなくても「何番目のハイパーリンクか」をインデックス番号で指定する必要があります。
そのため、単一のセルを対象にしている限り、中身は1つ(先頭の要素)しかあり得ないため、常に (1) を指定することになります。
コードを書く際は、対象が単一セル(Cells や要素を絞った Range)になっているか確認しましょう。
With ActiveSheet.Shapes("四角形 1")
.TopLeftCell.Offset(0, 1) =
.Hyperlink.Address
End With
こちらは、Shapeオブジェクト内のHyperlinkオブジェクトです。
以下も参考にして下さい。
ユーザー定義関数でハイパーリンクのURLを取得
練習問題26(全シート処理とハイパーリンク)
同じテーマ「マクロ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.
