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

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(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