URLを指定して開いたページをPDFで保存する
IEで特定のページを開く→ 仮想プリンタでPDF印刷という作業を繰り返したい人向け。
[作業の流れ]
- 仮想プリンタ(BullzipやPDF reDirect等)をインストールして通常使うプリンタに設定する。
- ExcelでURLのリストを作り、マクロにPDF化するプログラムを記載して実行。
PDF_PRINT.xlsm
VBAコード
'Sleepを使うためライブラリを呼び出し
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
Sub PRINT_PDF()
'URLリスト範囲
Const URL_LIST_HEAD = 1
Const URL_LIST_TAIL = 4
Const URL_LIST_ROW = 1
Dim UrlEntry As Long
'URL数分繰り返し
For UrlEntry = URL_LIST_HEAD To URL_LIST_TAIL
'URLを指定してPDFで印刷する
Call URL2PDF(Cells(UrlEntry, URL_LIST_ROW))
Next UrlEntry
End Sub
Function URL2PDF(URL As String)
'iexplore.exe起動
Set IE = CreateObject("InternetExplorer.Application")
'ブラウザ表示
IE.Visible = True
'URL指定したページを表示
IE.Navigate URL
'ページの読み込みが完了するまで待機
Do Until IE.Busy = False
Sleep 250
Loop
'デフォルトのプリンタ(今回はPDF出力する仮想プリンタ)で印刷実行
'IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
IE.ExecWB 6, 2
'ENTER, ALT+F4(閉じる)キーの送信用
Set Sh = CreateObject("WScript.Shell")
'適度なwait
Sleep 3000
'仮想プリンタの印刷ボタンをポチッとな
Sh.SendKeys ("{ENTER}")
'適度なwait
Sleep 10000
'閉じるボタン(ショートカットキー)(必要なら)
'Sh.SendKeys ("%" + "{F4}")
'適度なwait
Sleep 3000
Set Sh = Nothing
'IEを閉じる
IE.Quit
Set IE = Nothing
'IEのプロセスを強制終了
'IEを閉じるだけではプロセスが残り,次回のNavigateで失敗する場合があるので念のため
Shell "taskkill /f /im iexplore.exe"
'適度なwait
Sleep 3000
End Function
動けばいいやで作ったツールなので変なSleepの処理などはご容赦。
コメント