人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://q.hatena.ne.jp/1323786699
の続きの質問です。

IE6を利用しています。色々なページを表示して、IE.ExecWBで自動印刷しています。

印刷を自動でかけられるようになったのですが、1ページのみ限定で印刷したいとと思います。

ページによっては印刷範囲におさまりきらず、5ページとか表示されてしまいます。本当に必要なのは1ページ目のみです。
Web Browser Controlを使い、何か良い方法で1ページだけ印刷できるようにできないでしょうか?

または、デフォルトでファイルから印刷、「ページ範囲」の「ページ指定」に「1」選択するようにIEの設定をできないでしょうか?たぶんレジストリを触るような気がするのですが・・・

●質問者: akaired
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● cx20
●100ポイント ベストアンサー

ちょっと強引ですが、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


akairedさんのコメント
うわ??すごい!!わかりやすいコードまで書いて頂いてありがとうございます!物凄く勉強になります。レジストリは確認していましたが、ページ範囲に関して見つけることができなかったので、他にあるのかなと思って質問させて頂きました。MeadCo'sというものははじめて知りましたが、あとでチェックしてみます。ここまで詳しく書いて頂き大変助かりました。ありがとうございます!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ