tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル同一プリンターの「印刷設定」を選択したい。
記事No14663
投稿日: 2010/05/07(Fri) 14:03
投稿者Do_Shirouto
いつも教えて頂き有難うございます。
プリンター(EPSON-EP-802A)USB 接続(LAN接続変更可能)の
「印刷設定」から
数種類の印刷設定が「名前を付けて保存」して在りますが、
VB6.よりプリンターダイアログ表示せず選択したいのですが、
--------------------
With Printer
        .PaperSize = vbPRPSUser
        .Height = 56.7 * 181
        .Width = 56.7 * 113
      .Orientation = vbPRORLandscape
End With
--------------
上記等が無効な様で、VB6.より数種類の印刷設定を使い分けたいのです。
よろしくお願いいたします。Win Xp Pro   Sp2

[ツリー表示へ]
タイトルRe: 同一プリンターの「印刷設定」を選択したい。
記事No14664
投稿日: 2010/05/07(Fri) 14:48
投稿者魔界の仮面弁士
EPSON ドライバーがどうであったかは失念しましたが、ユーザー定義サイズ用紙の場合、
 (1) 事前にプリンター用紙サイズを、OS側で設定しておく必要があるもの。
 (2) ユーザー定義サイズ用紙を選択した上で、用紙サイズを指定するタイプのもの。
 (3) そもそも、ユーザー定義用紙に対応していないもの。
の 3 パターンが存在しています。
そのうち、今回指定されている手法は (2) のドライバーに対して使われるものかと。


(2) の場合は通常、Printer オブジェクトで指定できるはずですが、稀に、用紙番号が
vbPRPSUser 以外に設定されている場合がありますので、後述する(1) と同じ手法で
用紙番号を調査しておいてください。


そして (1) の場合ですが、XP なら [コントールパネル]-[プリンタとFAX] から
[ファイル]-[サーバーのプロパティ]を開き、適切な用紙とそのサイズを指定して
事前に用紙設定を済ませておく必要があります。その後、Printer.PaperSize に
新設した用紙番号を整数で指定する事になります。


新しく作った用紙の番号は、以下のようにして取得します。

(A案) プリンターダイアログで用紙を手動設定した後、Printer.PaperSize が
 何になっているのかを事前に調査しておき、次回以降はその値を使って出力する。

(B案) DeviceCapabilities API を用いて、用紙名から番号を逆引きする。

[ツリー表示へ]
タイトルRe^2: 同一プリンターの「印刷設定」を選択したい。
記事No14665
投稿日: 2010/05/08(Sat) 08:30
投稿者Do_Shirouto
> そして (1) の場合ですが、XP なら [コントールパネル]-[プリンタとFAX] から
> [ファイル]-[サーバーのプロパティ]を開き、適切な用紙とそのサイズを指定して
> 事前に用紙設定を済ませておく必要があります。その後、Printer.PaperSize に
> 新設した用紙番号を整数で指定する事になります。
>
>
> 新しく作った用紙の番号は、以下のようにして取得します。
>
> (A案) プリンターダイアログで用紙を手動設定した後、Printer.PaperSize が
>  何になっているのかを事前に調査しておき、次回以降はその値を使って出力する。
>
とても親切な ご回答有難うございます。
結果としてVBより「印刷設定」を選択することは、不可能ですか?
http://oshiete.goo.ne.jp/qa/1906248.html
用紙設定は、まだ試してはいませんが
とても解りやすくご回答いただき有難うございました。
APIなるものは私には理解出来ませんので(A案)で試してみます。
また解らない事がありましたらよろしくお願いいたします。
有難うございました。

[ツリー表示へ]
タイトルRe: 同一プリンターの「印刷設定」を選択したい。
記事No14666
投稿日: 2010/05/08(Sat) 10:48
投稿者花ちゃん
> With Printer
>         .PaperSize = vbPRPSUser
>         .Height = 56.7 * 181
>         .Width = 56.7 * 113
>       .Orientation = vbPRORLandscape
> End With

上記では、後で印刷方向の指定を行っておりますので、その時にユーザー定義サイズが
無効になるようです。(多分?)

下記を試して見て下さい。
   With Printer
      '必ず最初に設定する事
      .Orientation = vbPRORLandscape
      'ユーザ定義サイズ
      .PaperSize = vbPRPSUser
      '用紙の縦寸法(mm サイズで指定)
      .Height = .ScaleY(181, vbMillimeters, vbTwips)
      '用紙の横寸法(mm サイズで指定)
      .Width = .ScaleX(113, vbMillimeters, vbTwips)
   End With

EPSON PM-A840 では、前記の方法でも OK でしたが、EPSON LP-1400 では、
設定できませんでしたので、色々試していたら、 .Orientation が原因のようでした。
上記の方法で、EPSON LP-1400 でも設定できるようになりました。

一度お試し下さい。

[ツリー表示へ]
タイトルRe^2: 同一プリンターの「印刷設定」を選択したい。
記事No14667
投稿日: 2010/05/09(Sun) 08:17
投稿者Do_Shirouto
>    With Printer
>       '必ず最初に設定する事
>       .Orientation = vbPRORLandscape
>       'ユーザ定義サイズ
>       .PaperSize = vbPRPSUser
>       '用紙の縦寸法(mm サイズで指定)
>       .Height = .ScaleY(181, vbMillimeters, vbTwips)
>       '用紙の横寸法(mm サイズで指定)
>       .Width = .ScaleX(113, vbMillimeters, vbTwips)
>    End With

花ちゃんさんご回答有難うございます。
色々試していたので、御礼が遅くなり大変申し訳ございません。
プリンタードライバーの用紙サイズを「ユーザー設定」で
適当な数値を入れておけば、上手く出来ました。
魔界の仮面弁士さんに教えて頂いた方法も上手く出来ました。
魔界の仮面弁士さん 花ちゃんさん有難うございました。

[ツリー表示へ]