QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

Excelのプリンタ設定を変更

現在VB6.0で,Excelオブジェクトを用いてExcelファイルの全シートを印刷するPGを作成中です。

印刷時のプリンタ設定は
部数:2部
カラー:白黒印刷
と決まっており,APIを用いてプリンタの設定をこれらに変更する方法は分かりました。
しかし,実際に動かしてみると,APIで設定したプリンタの設定よりも,Excelファイルが内部に保持しているプリンタの設定が優先されてしまいます。

Excelファイルが内部に保持しているプリンタの設定(DEVMODE構造体?)をPGから変更する方法はないでしょうか?

質問者:iwamu

回答

API でなくとも、Excel オブジェクト側で出来ると思いますが...

プリンタ指定は、Printout メソッドの ActivePrinter 引数が使えます。
部数ならば、Printout メソッドの Copies 引数が使えます。
白黒印刷ならば、PageSetup の BlackAndWhite プロパティを True にすれば出来ます。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

PrintOutメソッドの引数,およびPageSetupオブジェクトの
各プロパティを設定することによって,希望の動作が実現しました!

じゃんぬねっと様,どうもありがとうございました。

投稿者:iwamu

編集 履歴 (0)

Excel全般に言えることですが、
マクロ記録モードにして、自動化したい動作を実行すると、
どういう関数・プロパティを操作すべきかわかると思います。

VBAのソースとVB6のソースはそんなに変わりがありませんので、
簡単に移植も可能ですよ。

#ヘルプより早いかもしれません。

投稿者:かつのり

編集 履歴 (0)

>かつのり様
あぁ,なるほど・・・
役立つアドバイスをありがとうございます!

投稿者:iwamu

編集 履歴 (0)

あとは VB のサイトだと情報が少ないですので、
VBA マクロ系のサイトを調べると「出来ること」が把握できます。

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)

白黒印刷の設定についてさらに質問させてください。

PageSetupを用いた方法で変更できるのは,Excel側のページ設定の中にある白黒印刷の設定のようです。
Excelのページ設定ではなく,プリンタの印刷設定画面(各プリンタで異なる)で,白黒印刷(グレースケール印刷)を設定したいのですが,これをVB側から制御するにはどのようにしたらよいでしょうか。

試しにマクロ記録モードで動かしてみたところ,プリンタの印刷設定画面をいじった部分はコードに反映されていませんでした。

ExcelのVBAではプリンタ側の設定は変更できないのでしょうか。
AccessではDEVMODEをVBAからいじれるようですが・・・

投稿者:iwamu

編集 履歴 (0)

iwamuさんの書き込み (2005-11-01 15:47) より:

PageSetupを用いた方法で変更できるのは,Excel側のページ設定の中にある白黒印刷の設定のようです。

その通りです。
ユーザの意図しない設定の変更は、本来行ってはいけないのでお勧めしました。

ExcelのVBAではプリンタ側の設定は変更できないのでしょうか。

AccessではDEVMODEをVBAからいじれるようですが・・・

DEVMODE で白黒印刷って制御できましたっけ?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12234&forum=7

_________________C# と VB.NET の入門サイト
じゃんぬねっと日誌

投稿者:じゃんぬねっと

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。