画面を印刷するサンプルコードです。標準モジュールに以下のコードを追加して、PrintNikkeiプロシージャを実行します。
PrintNikkeiプロシージャを実行すると、日経新聞のWebサイトに移動して画面を印刷します。
サンプルコード
【動作確認日】2014年2月11日
【動作確認環境】Windows XP SP3・Excel 2007・Internet Explorer 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
'定数の定義 Public Const OLECMDID_PRINT = 6 Public Const OLECMDEXECOPT_DONTPROMPTUSER = 2 '日経新聞のホームページに接続して印刷するプロシージャ Sub PrintNikkei() Dim objIE As Object 'IE起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '日経新聞のホームページに接続 objIE.navigate "https://www.nikkei.com/" 'IEを待機 Call IEWait(objIE) '3秒停止 Call WaitFor(3) '画面を印刷する objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 'IEを待機 Call IEWait(objIE) '30秒停止(印刷なので少し長めに待機) Call WaitFor(30) 'IE終了 objIE.Quit Set objIE = Nothing End Sub 'IEを待機する関数 Function IEWait(ByRef objIE As Object) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function '指定した秒だけ停止する関数 Function WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Function |
解説
画面を印刷するために、IEオブジェクトのExecWBメソッドを利用しています。
1 |
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER |
ExecWBメソッドはIEのコマンドを実行するメソッドです。一番目の引数には実行したい内容のコマンドを指定し、二番目の引数にはオプションを指定します。
上の場合は2番目の引数にOLECMDEXECOPT_DONTPROMPTUSERを指定しているので、「印刷のプロパティ」で設定済みのデフォルトの印刷設定で印刷します。印刷プロパティの画面を一度出してから印刷するには、二番目の引数にOLECMDEXECOPT_PROMPTUSERを指定します。指定する引数については、以下のMSDNのページが参考になります。
MSDNの参考ページ(英語)
- ExecWBメソッド
- OLECMDID(一番目の引数)
- OLEDMDEXECOPT(二番目の引数)