📊 Excel VBA Top100
⚡

CreateHyperlinks

自動化

選択範囲のセル値をURLとしてハイパーリンクを設定します

セルに入力されたURLやファイルパスをクリック可能なハイパーリンクに自動変換するマクロです。一覧表のURL列やファイルパス列を一括でリンク化でき、ダブルクリックひとつで参照先に飛べる便利な表が完成します。Webサイトの一覧・関連ファイルの目次・外部参照の一覧などを作成する際に効果的です。テキストを手動でリンクに変換する繰り返し作業を自動化します。内部ではHyperlinks.Addメソッドを対象セルにループ適用しており、Address引数にURLやファイルパスを渡すだけでリンクが設定されます。OpenExternalFileと組み合わせれば、一覧表からリンクをクリックして直接ファイルを開く操作と、マクロから自動でファイルを開く操作の両方を状況に応じて選べる構成になります。1件ずつ手作業でハイパーリンクを挿入する操作と比べ、数百件規模の一覧表でも数秒で処理が完了します。

CreateHyperlinks デモ

📖 使い方

  1. VBAエディタを開く(Alt + F11)
  2. モジュールを挿入(挿入 > モジュール)
  3. 下記VBAコードをコピー&ペースト
  4. ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: URLが入力されたセル範囲を選択してから CreateHyperlinks を実行します

🎯 活用シーン

  • ✓Webサイト一覧表のURL列を一括でクリック可能なリンクに変換して、参照先に素早くアクセスできる一覧表を作成したいとき
  • ✓関連資料の一覧表でファイルパスをハイパーリンクに変換して、クリックで直接ファイルを開けるドキュメント目次を作りたいとき
  • ✓顧客データベースのウェブサイト欄を一括でリンク化して、顧客ページに素早くアクセスできる営業管理シートを整備したいとき
  • ✓社内Wikiや共有ドライブの目次シートを整備し、クリック一つで各資料にアクセスできるようにしたいとき
  • ✓取引先リストの担当者メールアドレス欄をmailtoリンク化し、営業担当がすぐ連絡できるようにしたいとき

💡 実装のヒント

  • ▸ハイパーリンクの表示テキストを変えたい場合は、TextToDisplayパラメーターでリンクテキストを指定してください。URLがそのまま表示されるのが見づらい場合に有効です。
  • ▸社内ネットワークのファイルパス(\\server\share\file.xlsx など)もハイパーリンクとして設定できます。クリックでExcelファイルが直接開けます。
  • ▸メールアドレスをmailto:リンクにする場合は、アドレスの前に「mailto:」を付けたURLを指定してください。
  • ▸既にハイパーリンクが設定されているセルに再実行するとリンクが重複することがあるため、事前にHyperlinks.Deleteで削除してから設定する方法も検討してください。
  • ▸大量のセルにリンクを設定する処理は時間がかかるため、対象範囲を絞るか進捗表示を追加すると親切です。

💻 VBAコード

' CreateHyperlinks
' -----------------
' Macro Name: CreateHyperlinks
' Description: 選択範囲のセル値をURLとしてハイパーリンクを設定します
' Parameters: なし
' Returns: なし
' Usage: URLが入力されたセル範囲を選択してから CreateHyperlinks を実行します
' -----------------

Sub CreateHyperlinks()
    On Error GoTo ErrorHandler

    Dim rng As Range
    Dim cell As Range
    Dim createdCount As Long

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください", vbCritical, "エラー"
        Exit Sub
    End If

    Set rng = Selection
    createdCount = 0

    For Each cell In rng
        If Not IsEmpty(cell) And VarType(cell.Value) = vbString Then
            If Left(cell.Value, 4) = "http" Then
                ActiveSheet.Hyperlinks.Add Anchor:=cell, Address:=cell.Value, _
                    TextToDisplay:=cell.Value
                createdCount = createdCount + 1
            End If
        End If
    Next cell

    MsgBox createdCount & " 件のハイパーリンクを作成しました", vbInformation, "完了"

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました:" & vbCrLf & Err.Description, vbCritical, "エラー"
End Sub