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