アプリ版:「スタンプのみでお礼する」機能のリリースについて

プリンターの設定で「白黒」印刷した結果と
VBA で「.PageSetup.BlackAndWhite = True」で印刷した結果が異なるのですが、
どのようにVBAでプログラムしたら
プリンターの設定で「白黒」印刷した結果と
同じになるのでしょうか?
※プリンターの設定で「白黒」印刷した場合、薄い灰色などは、きちんと臼井灰色で表示されるのですが、VBA で「.PageSetup.BlackAndWhite = True」は、真っ白にでる。


何卒よろしくお願いします。

A 回答 (4件)

他の方たちと、あまり違わない話で恐縮なのですが、



>使用する対象のプリンタがかわるので、できれば、プリンタ名の設定等なしで行きたいと思っています。

ご質問の趣旨というのは、固有のプリンターやそのプリンタードライブではない、プリンター全体のプロパティの設定という意味でしょうか。いわゆる配布するためのブックに搭載するマクロだと思います。

#3さんと回答につながっていますが、昨日、試してみた範囲では、プリンターのプロパティまでは呼び出せましたが、そのプロパティのハンドルを取った後、その中の名称(たぶん・モノクロという用語)を探すことになるだろうとは予想しました。Frame 自体は、Windowsのものを使っているようですが、その中に関しては、各社各様で、設定もいろいろあるだろうから、それをマクロ化するというのは、私の知識の範囲内では、ありえないと思います。ただし、UWSCのような物理的(マウスカーソルを移動するという意味)なマクロが可能ならば、可能性はあります。

また、プリンタードライバによっては、登録会員になれば、その仕様を公開するという会社もあるようですが、それは特定の機種の業務用開発に限ります。MS-DOS時代に公開していたような、直接行うプリンターコマンドは、今は見たことがありません。

「.PageSetup.BlackAndWhite = True」
これ以上のExcel側が持っている命令以外に、プリンター自体が備わっている固有の命令は、無理ではないかと思います。ダメだという結論までは言えませんが、Win APIでも、それは見たことがないのです。
    • good
    • 0

No.2の回答者です。


プリンタでの白黒印刷についてですが、プリンタのメーカーが違っていれば
表記が変わります。
モノクロ印刷であったり、グレースケール印刷だったりするので、白黒だと
限定するのが間違いです。

印刷者が使用するプリンタによって白黒状態での印刷をしてほしいのなら、
印刷時にプリンタのプロパティで指定するか、シートなどの内容を区別する
色をグレースケールで作成するしかないと思います。

VBAでプリンタのプロパティにある白黒関係の項目を取得できるのならば、
希望していることが可能かもしれませんが、Excelとは関係ない部分のこと
なので、難しいと思いますよ。
WindowsのAPIなどで取得できるかどうかは、私は知りません。
質問者自身で調べるか、別質問されてはいかが。
https://msdn.microsoft.com/ja-jp/VBA/Access-VBA/ …
    • good
    • 0

プリンタでの白黒印刷の設定と、Excelの白黒印刷は別物ですよ。


Excelの[白黒印刷]は、グラフなどでは色が[パターン]に置き換えられますが、
セルの色などは印刷しない設定です。
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
http://excelwork.info/excel/blackandwhite/

プリンタの設定で印刷したいのなら、白黒印刷のプリンタドライバを用意して、
名前を付けて別のプリンタドライバとして登録しておきます。
マクロの例:
Sub test()

 DefaultPrinter=Application.ActivePrinter  '現在のプリンタ名を記憶
  '白黒印刷のプリンタを指定
 ActiveSheet.PrintOut _
         Copies:=1, _
        ActivePrinter:="白黒印刷のプリンタ名", _
        Collate:=True
 Application.ActivePrinter=DefaultPrinter  '現在のプリンタ名に戻す

End Sub

http://www.asahi-net.or.jp/~zn3y-ngi/YNxv261.htm …
    • good
    • 0
この回答へのお礼

使用する対象のプリンタがかわるので、できれば、プリンタ名の設定等なしで行きたいと思っています。

VBAで無理ですかね。。。

お礼日時:2017/10/18 17:06

多分「白黒印刷」ではなく「グレースケール印刷」をしたいのだと思いますが、VBAでは指定できません。

一番簡単に出来そうなのはグレースケール印刷に設定したプリンターを作成しておいて、プリンターを切り替えるのが良いと思います。
    • good
    • 0
この回答へのお礼

使用する対象のプリンタがかわるので、できれば、プリンタ名の設定等なしで行きたいと思っています。

VBAで無理ですかね。。。

お礼日時:2017/10/18 17:06

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

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


このQ&Aを見た人がよく見るQ&A