📘 Excel逆引き事典

【VBA】ハイパーリンクを開かずに外部参照でPDF保存する方法

日々の業務で、ハイパーリンクから開かれたウェブサイトを手動で印刷してPDFに保存するのは労力がかかる作業です。この記事では、VBAを使用してハイパーリンクを開かずに直接外部参照でPDF保存する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub SaveHyperlinkAsPDF()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' ハイパーリンクのURL取得
    Dim url As String
    url = ws.Range("A2").Hyperlinks(1).Address
    
    ' PDF保存先パス設定
    Dim pdfPath As String
    pdfPath = "C:\Users\Username\Documents\output.pdf"
    
    ' Excelの画面更新を停止
    Application.ScreenUpdating = False
    
    ' URLを開く
    With CreateObject("InternetExplorer.Application")
        .Visible = True
        .Navigate url
        Do While .Busy Or .readyState <> 4: DoEvents: Loop
        ' PDF保存
        .Document.parentWindow.execScript "window.print();", "JavaScript"
        Application.Wait (Now + TimeValue("0:00:10"))
        .Quit
    End With
    
    ' Excelの画面更新を再開
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。また、Internet Explorerがインストールされていることを確認してください。