Internet Explorerの現在のページを印刷する
Excel VBAマクロでIEを自動操作で「Webページを印刷」したい場合の記事です。
ExecWBメソッドを使用し、印刷を行います。
Webページ印刷するサンプルコード
'■InternetExplorerで表示中のページを印刷 Sub sample_IE_ExecWB_Print() Dim objIE As InternetExplorer Dim objDoc As Variant '■IEを起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '■該当ページへ遷移 objIE.navigate "https://vba-create.jp/kyoteivba-contact/" Call Call_IE_WaitTime '■ExecWBで印刷処理をする(印刷ダイアログを表示せずに印刷) objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER End Sub
注意点
- こちらのコードだけでは動作しません。
下記の読み込み待ちのパーツ化したコードが必要です。
VBAでIE操作「ブラウザの読込待ち」処理をパーツ化する【エクセルマクロ】 - 印刷した結果(成功・失敗)は取得できない為、注意が必要です。
- 印刷後も画面遷移する場合は、Sleep関数などで印刷待ちをした方がよいです。
ExecWBで使用する引数
ExecWBの仕様で「印刷に関する部分のみ」抜粋しています。
その他はこちらのページを参考にどうぞ。
object.ExecWB( cmdID as OLECMDID, cmdexecopt as OLECMDEXECOPT, [pvaIn, pvaOut] )
引数 | 定数名 | 値 | 説明 |
OLECMDID | OLECMDID_PRINT | 6 | メニュー内、「ファイル」 → 「印刷」 |
OLECMDID_PRINTPREVIEW | 7 | メニュー内、「ファイル」 → 「印刷プレビュー」 | |
OLECMDEXECOPT | OLECMDEXECOPT_DODEFAULT | 0 | デフォルトの動作を使用 |
OLECMDEXECOPT_PROMPTUSER | 1 | ユーザーの入力を取得後に、コマンド実行 | |
OLECMDEXECOPT_DONTPROMPTUSER | 2 | ユーザーに入力を取得せず、コマンド実行 |
コメント