VBAでハイパーリンク

投稿日: 2024年6月3日

ハイパーリンク (Hyperlink) とは、テキストや画像などをクリックすることで他のドキュメントやWebページ、あるいは同じドキュメント内の他の部分にジャンプすることができるリンクのことです。
ハイパーリンクを扱う方法について説明します。

コレクションとメソッド内容
Hyperlinks.Addハイパーリンクを追加します。
Hyperlinks.Deleteハイパーリンクを削除します。
Hyperlinks.Countハイパーリンクの数を返します。
Hyperlinks.Itemインデックスを使用して特定のハイパーリンクを取得します。

ハイパーリンクを追加する

指定したセルにハイパーリンクを追加するには、Hyperlinks.Addメソッドを使用します。

Sub AddHyperlink()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1セルにハイパーリンクを追加
    ws.Hyperlinks.Add Anchor:=ws.Range("A1"), _
                      Address:="https://www.example.com", _
                      TextToDisplay:="Example Website"
End Sub

Addのメソッドの構文

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

Addのメソッド内容
Anchorハイパーリンクを追加するセルまたは範囲
Addressリンク先のURLまたはファイルパス
SubAddressドキュメント内の特定の位置(省略可能)
ScreenTipハイパーリンクにカーソルを合わせたときに
表示されるテキスト(省略可能)
TextToDisplayセルに表示されるテキスト(省略可能)

ws.Hyperlinks.Add Anchor:=ws.Range(“A1”), _ ←このコードの「_」についてはソースコード内の改行になります。

ハイパーリンクのアドレスを取得する

指定したセルに既存のハイパーリンクのアドレスを取得するには、Hyperlinksコレクションを使用します。

Sub GetHyperlinkAddress()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim link As Hyperlink
    Set link = ws.Hyperlinks(1) ' 1番目のハイパーリンクを取得
    
    MsgBox link.Address ' ハイパーリンクのアドレスを表示
End Sub

ハイパーリンクを削除する

指定したセルからハイパーリンクを削除するには、Deleteメソッドを使用します。

Sub DeleteHyperlink()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1セルのハイパーリンクを削除
    ws.Hyperlinks(1).Delete
End Sub

すべてのハイパーリンクを削除する

シート内のすべてのハイパーリンクを削除する場合は、次のようにループを使用します。

Sub DeleteAllHyperlinks()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' すべてのハイパーリンクを削除
    ws.Hyperlinks.Delete
End Sub

これらのコードを利用することで、Excelでハイパーリンクを簡単に操作することができます。

Excelファイルをハイパーリンクさせる

ExcelのA列にパス、B列にファイル名がある場合、C列にハイパーリンクを作成するVBAコードを以下に示します。このコードは、A列とB列の値を組み合わせて完全なパスを作成し、C列にそのハイパーリンクを挿入します。

データ準備で以下のようにします。(実際のファイルとフォルダに変更してください。)ファイル名は拡張子も含めます。

フォルダパスファイル名ハイパーリンク
C:\Usersbook1.xlsx
C:\Downloadsbook2.xlsx

コード

Sub CreateHyperlinks()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Dim lastRow As Long
    Dim i As Long
    Dim filePath As String
    Dim fileName As String
    Dim fullPath As String
    
    ' 最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 2行目から最終行までループ
    For i = 2 To lastRow
        filePath = ws.Cells(i, 1).Value ' A列の値を取得
        fileName = ws.Cells(i, 2).Value ' B列の値を取得
        
        ' フルパスを作成
        fullPath = filePath & "\" & fileName
        
        ' C列にハイパーリンクを追加
        ws.Hyperlinks.Add Anchor:=ws.Cells(i, 3), _
                          Address:=fullPath, _
                          TextToDisplay:=fileName
    Next i
End Sub

コードの説明

シートの設定
Set ws = ThisWorkbook.Sheets("Sheet1")

使用するワークシートを設定します。

最終行の取得
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

A列の最終行を取得します。

ループ処理
For i = 2 To lastRow

2行目から最終行までループして処理を行います。

パスとファイル名の取得
filePath = ws.Cells(i, 1).Value
fileName = ws.Cells(i, 2).Value
フルパスの作成
fullPath = filePath & "\" & fileName
ハイパーリンクの追加
ws.Hyperlinks.Add Anchor:=ws.Cells(i, 3), Address:=fullPath, TextToDisplay:=fileName

このコードを実行すると、A列にパス、B列にファイル名が入力されている行について、C列にそのファイルへのハイパーリンクが作成されます。ハイパーリンクの表示テキストはB列のファイル名になります。

記事