VBでWebBrowserで表示されたものを出力サイズ等を変更して印刷したいのですが・・・
過去ログを拝見させて頂き、
> ちなみに、ScriptXという外部のコンポーネントを併用すれば、
> 印刷方向や余白などを制御する事さえできます。
という文章を発見いたしました。
自分なりに調べてはみましたが、VB初心者なもので、ScriptXという外部のコンポーネントをどのように併用するのかがわかりません。(どのように実装するのかがわかりません・・・)
ご存知のお方がおりましたら、ご教授宜しくお願い致します。
以前、下記のメーリングリストにて回答した事があります。
http://www.users.gr.jp/ml/archive/vb/
[VB:07291]から始まるスレッドを参照してみてください。
> http://www.users.gr.jp/ml/archive/vb/
ありゃ、5428番までしか公開されていないみたいですね……。
# 入会して過去ログを取得するしかないのか。(泣)
とりあえず、ScriptXについてはこちらを参照してみてください。
http://www.microsoft.com/japan/msdn/web/scripting/dhtmlprint.asp
http://www.meadroid.com/scriptx/
魔界の仮面弁士さんありがとうございます。
教えていただいた、サイトを参照してみました。
しかし、分からない点があります。
VBのプログラムの中で、どのように実装すればScriptXを呼べるのでしょうか?
そのような情報がのっているサイト等がありましたら、教えて頂けないでしょうか?
大変申し訳ありませんが宜しくお願い致します。
> VBのプログラムの中で、どのように実装すればScriptXを呼べるのでしょうか?
まず、HTMLのobjectタグでScriptXをブラウザ上に貼り、次に、
WebBrowser.documentプロパティ経由で、そのobjectタグを取得して使います。
例えば、そのobjectタグのidとして "ScriptX1"などという名前を
付けておけば、VBからは
Set mobjFactory = WebBrowser1.Document.getElementById("ScriptX1")
のようにして、そのオブジェクトを取得できます。
もしくは以下のようにして、ScriptXを動的に埋め込んでも良いでしょう。
Private mobjFactory As ScriptX.Factory
:
(中略)
:
Set obj = objHTMLDocument.createElement("object")
obj.classid = "clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
obj.style.display = "none"
Set body = objHTMLDocument.body
body.appendChild obj
Set mobjFactory = objHTMLDocument.object
:
ここまで来たら、あとは、mobjFactoryを普通のActiveXコントロールのように
扱うことができます。
> そのような情報がのっているサイト等がありましたら、教えて頂けないでしょうか?
ScriptX自体の具体的なサンプルは、ScriptX付属のコードが参考になるでしょう。
VBのWebBrowserから呼び出す方法は、先に提示したメーリングリストの
過去ログを参照してみてください。
魔界の仮面弁士さんありがとうございます。
メーリングリストの過去ログを参照させていただきました。
自分で試してみたところ、横印刷はできました。
ただ、用紙サイズを変更することができません。
以下にソースを記述致しますので、間違った点をご指摘お願い致します。
Dim Doc As MSHTML.HTMLDocument
・
・
・
Do While Doc Is Nothing
DoEvents
Set Doc = WebBrowser1.Document
Loop
Set obj = Doc.createElement("object")
'Set obj = WebBrowser1.Document.createElement("object")
obj.classid = "clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
obj.Style.display = "none"
Set body = Doc.body
body.appendChild obj
Set mobjFactory = obj.object
Set obj = Nothing
Set body = Nothing
Set Doc = Nothing
Set Pr = mobjFactory.printing
Pr.portrait = True
Pr.PaperSize = "A4"
WebBrowser1.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
Set Pr = Nothing
大変申し訳ございませんが宜しくお願い致します。
ツイート | ![]() |