2016年7月17日日曜日

Excel VBAでWebページを印刷する方法(ブラウザ:Internet Explorer)

結構苦戦したので、コードをメモ
A列(2行目から開始)に入力しているURLを、上から順番にブラウザで開いて、「通常使うプリンタ」に設定されているプリンタで印刷

Sub sample()
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2

Dim objIE As Object
Dim cnt As Long
Dim URL As String
Dim waitTime As Variant
Dim msg As String

     msg = MsgBox("印刷を開始しますか?", vbYesNo + vbQuestion)
     If msg = vbNo Then Exit Sub

     'URLを取得
     cnt = Application.CountA(ActiveSheet.Range("a:a")) - 1

     For i = 1 To cnt
         URL = Range("a" & 1 + i).Value

         'IE(InternetExplorer)のオブジェクトを作成する
         Set objIE = CreateObject("InternetExplorer.Application")

         'IEを表示
         objIE.Visible = True

         '指定URLを表示
         objIE.navigate URL

         'ページが完全に表示されるまで待機
         Do While objIE.Busy = True Or objIE.readyState <> 4
             DoEvents
         Loop

         '画面を印刷する
         objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

         '印刷が終了するまで3秒停止      
          waitTime = Now TimeValue("0:00:03")
        Application.Wait waitTime

         'IE終了
         objIE.Quit

     Next i

     MsgBox "印刷が終了しました。", vbOKOnly + vbInformation
End Sub

0 件のコメント:

コメントを投稿