【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.
シート名や列番号が正しいか確認してください。