📘 Excel逆引き事典

【VBA】ハイパーリンクを確認メッセージ無しで別ブックとして保存する方法

手作業でハイパーリンク付きのデータを移動するのは時間がかかる上、ミスが起こりやすいです。この記事では、VBAを使って高速にかつ確実に別のブックへ保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveHyperlinksAsAnotherBook()
    Dim ws As Worksheet, wbNew As Workbook
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ' 新規ブックを作成
    Set wbNew = Workbooks.Add
    
    ' データをコピー
    ws.UsedRange.Copy Destination:=wbNew.Sheets(1).Cells(1, 1)
    
    ' ハイパーリンクを保存
    Dim i As Long, lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    For i = 1 To lastRow
        If ws.Hyperlinks(i) Is Nothing Then Exit For ' ハイパーリンクが存在しない場合終了
        wbNew.Sheets(1).Hyperlinks.Add Anchor:=wbNew.Sheets(1).Cells(i, 2), Address:=ws.Hyperlinks(i).Address, TextToDisplay:=ws.Hyperlinks(i).TextToDisplay
    Next i
    
    ' 新規ブックを保存
    wbNew.SaveAs ThisWorkbook.Path & "\HyperlinkData.xlsx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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