📘 Excel逆引き事典

【VBA】ハイパーリンクをバックグラウンドでPDF保存する方法

日々の業務で大量のデータを扱っていると、ハイパーリンクのあるセルを個別に開いて印刷したり、PDFに変換するのは非常に時間がかかります。この記事では、VBAを使用してハイパーリンクのあるセルを自動的にPDFに変換し、バックグラウンドで保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub HyperlinkToPDF()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    ' ハイパーリンクのあるセルの範囲を取得
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
    For i = 1 To lastRow
        If ws.Cells(i, 2).Hyperlinks.Count > 0 Then
            ' ハイパーリンクのURLを取得
            Dim url As String
            url = ws.Cells(i, 2).Hyperlinks(1).Address
            
            ' URLからPDFを作成して保存
            With CreateObject("InternetExplorer.Application")
                .Visible = False
                .Navigate url
                Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
                Dim pdfPath As String
                pdfPath = ThisWorkbook.Path & "\" & ws.Cells(i, 1) & ".pdf"
                .Document.parentWindow.execScript "window.print();", "JavaScript"
                ' PDF保存処理を待つ(適切な時間が必要)
                Application.Wait Now + TimeValue("0:00:5")
                .Quit
            End With
        End If
    Next i
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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