プロが教えるわが家の防犯対策術!

度々お世話になります。

マクロで、120×260mmの用紙を設定したいのですが、
上手くできません。どのようにしたら良いのでしょうか?

簡単な質問で申し訳ありませんが、よろしくお願いします。

A 回答 (3件)

1番ですが。


マクロの記録をとって、「ページ設定」をしても
---
・ファイル
・ページ設定
 ↑ VBAの管轄はここまで
   よって定数(A4やB5とか)による用紙の指定は可能
 ↓ プリンタドライバ側の問題。プリンタによってはそもそも項目が全くない場合もあります。
・オプション
・ユーザー設定...
---
ですのでオプション以降はマクロでは記録できませんよ。

ちなみに「プリンタが変わる毎に、自分で用紙サイズを追加しないといけないと言うことですか?」
プリンタが変わる毎だけでなく(そもそも全てのプリンタでフリーサイズの設定が出来るとは限りませんし)、同じプリンタでも印刷の度に用紙サイズを指定する必要があるかと。まぁプリンタによっては前回指定した値を既定のものとしてそのまま保存するかもしれないので。
ActiveSheet.PageSetup.PaperSize =xlPaperUser
としておくだけで、前回のフリーサイズを120×260mmで指定していれば、そのまま印刷してくれるのがあるのかもしれませんね。
    • good
    • 0

マクロの記録をとって、「ページ設定」をやって見てください。


私のCanonのプリンタの場合
ファイル
ページ設定
オプション
ユーザー設定
ユーザー定義サイズ
幅(0.1mm単位)1200
長さ(0.1mm単位)2600
が出ます。
結果コードを見ると、1200や2600と言う数は
出てこない(?)ようで、マージンを調節しているようですね。
.LeftMargin = Application.InchesToPoints(0.787)
.RightMargin = Application.InchesToPoints(0.787)など後5つ。
実際印刷してみて120X260mmになるかやって見てください。
プリンタ(のデバイスドライバ)に依存するかも。
    • good
    • 0

無理です。



フリーサイズの用紙設定はプリンタドライバ側の問題になりますので、数値の指定をVBAからは行えません。
定数であれば指定できますが
例えば
ActiveSheet.PageSetup.PaperSize = xlPaperEnvelopeC6
とすればこれは封筒 C6 サイズですので(114 x 162 mm)と割と近い数字になるかと。まぁこれも通るかはプリンタの対応次第ですが。

他の対応としては
・セル幅をミリ単位で指定するようなアドインを使う
http://bird.zero.ad.jp/~zap50064/freesoft/Tools. …
・APIを使ってプリンタを直接制御させる
    • good
    • 0
この回答へのお礼

ありがとうございます。

そうですか。むりですか~。

ちなみにフリーサイズの用紙で印刷したい場合、
プリンタが変わる毎に、自分で用紙サイズを追加しないといけないと言うことですか?

お礼日時:2004/02/06 15:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています