VBでScriptXを使用するには


taka  2003-01-20 13:39:40  No: 76843  IP: [192.*.*.*]

VBでWebBrowserで表示されたものを出力サイズ等を変更して印刷したいのですが・・・
過去ログを拝見させて頂き、
 > ちなみに、ScriptXという外部のコンポーネントを併用すれば、
 > 印刷方向や余白などを制御する事さえできます。
という文章を発見いたしました。
自分なりに調べてはみましたが、VB初心者なもので、ScriptXという外部のコンポーネントをどのように併用するのかがわかりません。(どのように実装するのかがわかりません・・・)
ご存知のお方がおりましたら、ご教授宜しくお願い致します。

編集 削除
魔界の仮面弁士  2003-01-20 13:53:53  No: 76844  IP: [192.*.*.*]

以前、下記のメーリングリストにて回答した事があります。
http://www.users.gr.jp/ml/archive/vb/

[VB:07291]から始まるスレッドを参照してみてください。

編集 削除
魔界の仮面弁士  2003-01-20 14:00:16  No: 76845  IP: [192.*.*.*]

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/

編集 削除
taka  2003-01-20 15:28:32  No: 76846  IP: [192.*.*.*]

魔界の仮面弁士さんありがとうございます。
教えていただいた、サイトを参照してみました。
しかし、分からない点があります。
VBのプログラムの中で、どのように実装すればScriptXを呼べるのでしょうか?
そのような情報がのっているサイト等がありましたら、教えて頂けないでしょうか?
大変申し訳ありませんが宜しくお願い致します。

編集 削除
魔界の仮面弁士  2003-01-20 17:46:44  No: 76847  IP: [192.*.*.*]

> 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から呼び出す方法は、先に提示したメーリングリストの
過去ログを参照してみてください。

編集 削除
taka  2003-01-21 13:50:31  No: 76848  IP: [192.*.*.*]

魔界の仮面弁士さんありがとうございます。
メーリングリストの過去ログを参照させていただきました。
自分で試してみたところ、横印刷はできました。
ただ、用紙サイズを変更することができません。
以下にソースを記述致しますので、間違った点をご指摘お願い致します。

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

大変申し訳ございませんが宜しくお願い致します。

編集 削除