📘 Excel逆引き事典

【VBA】ハイパーリンクを配列を使って高速にコピーする方法

日々の業務では、大量のデータを手作業でコピーすることは非常に時間がかかります。特にハイパーリンク付きセルのコピーは厄介です。この記事では、配列を使用して高速にハイパーリンク付きセルをコピーするVBAマクロを作成します。

サンプルコード

VBA
Option Explicit
Sub CopyHyperlinksUsingArray()
    Dim ws As Worksheet, targetWs As Worksheet
    Dim lastRow As Long, i As Long
    Dim hyperLinks() As Variant

    ' シートを指定
    Set ws = ThisWorkbook.Sheets("SourceSheet")
    Set targetWs = ThisWorkbook.Sheets("TargetSheet")

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

    ' ハイパーリンク情報を配列に格納
    ReDim hyperLinks(1 To lastRow)
    For i = 1 To lastRow
        If Not IsEmpty(ws.Hyperlinks(i)) Then
            hyperLinks(i) = ws.Hyperlinks(i).Address & "|" & ws.Hyperlinks(i).SubAddress
        Else
            hyperLinks(i) = vbNullString
        End If
    Next i

    ' 画面更新を停止
    Application.ScreenUpdating = False

    ' ハイパーリンク情報をターゲットシートにコピー
    For i = 1 To lastRow
        If hyperLinks(i) <> vbNullString Then
            targetWs.Hyperlinks.Add Anchor:=targetWs.Cells(i, 1), Address:=Split(hyperLinks(i), "|")(0), SubAddress:=Split(hyperLinks(i), "|")(1)
        End If
    Next i

    ' 画面更新を再開
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。