の続きの質問です。
IE6を利用しています。色々なページを表示して、IE.ExecWBで自動印刷しています。
印刷を自動でかけられるようになったのですが、1ページのみ限定で印刷したいとと思います。
ページによっては印刷範囲におさまりきらず、5ページとか表示されてしまいます。本当に必要なのは1ページ目のみです。
Web Browser Controlを使い、何か良い方法で1ページだけ印刷できるようにできないでしょうか?
または、デフォルトでファイルから印刷、「ページ範囲」の「ページ指定」に「1」選択するようにIEの設定をできないでしょうか?たぶんレジストリを触るような気がするのですが・・・
ちょっと強引ですが、UWSC で印刷ダイアログを制御することで、印刷ページの指定が可能です。
Windows7 + IE9 の環境で確認しました。
ブラウザのバージョンによってはショートカットキーが違うために正しく動作しない可能性がありますので、お手数ですが、確認をお願いします。
// File : IEAutoPrint.uws Option Explicit Main() Procedure Main() // Web ページを表示 ShowBrowser( "http://www.yahoo.co.jp/" ) Sleep(1) // ページ範囲を指定して印刷 Dim strPageCondition strPageCondition = "1-1" PrintBrowser( strPageCondition ) Fend Procedure ShowBrowser( strURL ) Dim ie ie = CreateOleObj("InternetExplorer.Application") ie.Visible = True Print "Web ページ [" + strURL + "] を表示" ie.Navigate( strURL ) Fend Procedure PrintBrowser( strPageCondition ) Dim nID nID = ActivateBrowser() Sleep(1) ExecPrint( nID, strPageCondition ) Fend Function ActivateBrowser() Dim nID nID = GetId( "Internet Explorer", "IEFrame" ) ACW( nID ) Result = nID Fend Function ActivatePrintDialog() Dim nID nID = GetId( "印刷" ) ACW( nID ) Result = nID Fend Procedure ExecPrint( nID, strPageCondition ) Print "印刷ダイアログを表示" ScKey( nID, VK_CTRL, P ) Sleep(1) nID = ActivatePrintDialog() Sleep(1) Print "[ページ範囲] - [ページ指定(G)] を選択" ScKey( nID, VK_ALT, G) Sleep(1) Print "印刷ページを [" + strPageCondition + "] に指定" SendStr( nID, strPageCondition ) Sleep(1) Print "[印刷(P)] 実行" ScKey( nID, VK_ALT, P) Sleep(1) Fend
実行結果
Web ページ [http://www.yahoo.co.jp/] を表示 印刷ダイアログを表示 [ページ範囲] - [ページ指定(G)] を選択 印刷ページを [1-1] に指定 [印刷(P)] 実行
ちなみに、IE の印刷設定に関して、レジストリで設定できるのは
くらいのようです。プリンタ名を選択したり、ページ数を指定するような設定は持っていないようです。
■ How to change print settings for Internet Explorer and the WebBrowser control programmatically in Internet Explorer
http://support.microsoft.com/kb/236777/en-us
また、有償のようですが「MeadCo's ScriptX」という ActiveX コントロールを利用することで、印刷処理の自動化が行えるようです。
■ MeadCo's ScriptX: Printing Programming Manual
http://www.meadroid.com/scriptx/docs/clientprint.htm
うわ~~すごい!!わかりやすいコードまで書いて頂いてありがとうございます!物凄く勉強になります。レジストリは確認していましたが、ページ範囲に関して見つけることができなかったので、他にあるのかなと思って質問させて頂きました。MeadCo'sというものははじめて知りましたが、あとでチェックしてみます。ここまで詳しく書いて頂き大変助かりました。ありがとうございます!
2011/12/16 23:01:10