UWSCについて教えて下さい。


IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
IE.Navigate("http://www.yahoo.co.jp/")
IE.print()

とやっても、プリントができません。COM Error:例外が発生しました。
と表示されます。

IE.Navicateでは問題なく、yahooにアクセスできますが、print()とやるとエラーになります。下記のサイトを参考に、printメソッドがあったので使用してみたのですが、できませんでした。

Microsoftのサイトでweb browser controlについて調べましたが、printメソッドをあることを確認しています。

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/12/14 13:16:58
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント100pt

Microsoftのサイトでweb browser controlについて調べましたが、printメソッドをあることを確認しています。

WebBrowser Control ですが、

  • ActiveX 版(COM 版)
  • .NET Framework 版

の2種類があります。
残念ながら、ActiveX 版(COM 版)の WebBrowser Control には、Print メソッドはされていないようです。

■ WebBrowser Control - メソッド一覧(ActiveX版)
http://msdn.microsoft.com/en-us/library/aa768399.aspx
■ WebBrowser Control - メソッド一覧(.NET Framework 版)
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser_methods.aspx

ken3memo さんが提示されているように ExecWB メソッドを使用するか

// File : IEPrintTest.uws
Option Explicit

Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2

Dim ie
ie = CreateOLEObj("InternetExplorer.Application")
ie.Visible = True
ie.Navigate("http://www.yahoo.co.jp/")
Sleep(1)
ie.ExecWB( OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER )

ie.Document.ParentWindow.Print で印刷処理が呼ばれるようです。ただし、こちらは、印刷ダイアログが表示されてしまうようですが。。。

ie.Document.ParentWindow.Print

あと、UWSC の機能を使用して、Ctrl+P(印刷のキーボードショートカット)を呼び出すという方法があります。こちらも、同様に、印刷ダイアログが表示されてしまいます。

Dim id
id = GetId( "Internet Explorer", "IEFrame" )
CtrlWin( id, ACTIVATE )
ScKey( id, VK_CTRL, P )

  • 参考情報

■ 画面を印刷する - VBAによるIE自動制御入門
http://vbaie.blog111.fc2.com/blog-entry-23.html

id:akaired

ご回答ありがとうございます。問題なく印刷できました。
教えて頂いたie.ExecWB( OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER )で
印刷ダイアログは表示されずに印刷できました。

Const OLECMDEXECOPT_DODEFAULT = 0だと印刷ダイアログが表示されました。

http://q.hatena.ne.jp/1323836130で別の質問もしたのでもしお答え頂けるとありがたいです。

2011/12/14 13:19:13
  • id:ken3memo
    IE.Navigate("http://www.yahoo.co.jp/")
    IE.ExecWB(6, 2)
    で↑コマンドのプリントを実行とか?
    .
    >IE.Navicateでは問題なく、yahooにアクセスできますが、
    ここで、ページの表示待ちがなく、いきなり
    >print()とやるとエラーになります
    Printで印刷するとエラーになるのかも?
    有名なUWSCは使ったことが無いので、コメントで失礼します。
  • id:akaired
    ken3memoさん
    ちょうどken3の記事を読んでいました。しかしExecWBについては見逃していました。早速ですが明日試してみたいと思います。
    IE.Navigateでは表示が完了した後にprintをしてますので、こちらは大丈夫かと思います。ご回答ありがとうございました。
  • id:cx20
    脱字がありました。訂正します。

    誤:Print メソッドはされていないようです。
    正:Print メソッドは実装されていないようです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません