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

エクセルシートのプリンタドライバの印刷設定について、現在の印刷設定と両面印刷設定とを切り替える方法を探しています(EXCEL2002です)。

VBAによる対策方法を色々調べてみましたが、VBAの機能では対応できないようです。
( sendkeys を使って擬似的にキー入力を行う方法もありましたが、ショートカットの割り当てが他のアプリケーションと重なる可能性があるため、この方法は避ける事にしました)


ワード向けですが、MicrosoftのページにVBからAPIを利用して、同様の設定をするサンプルがありましたので、エクセルのVBAでも試してみましたが、変更したプリンタの設定は、シートの設定に反映されませんでした(エクセル独自でシート毎の印刷設定が保存されていると思っています)。

対策として、
1)APIをうまく使う方法
2)Excelファイルが持っていると思われるプリンタ設定の変更
の2つがあると思っています。

APIを本格的に使ったこともありまんせので、印刷設定に関するAPIの参考情報を教えてもらえるだけでも助かります。

よろしくお願い致します。

A 回答 (5件)

> 保存したファイルを読み直しても、シート別にプリンタ設定が異なっていました。



ホントですね。
勘違いしてました。

--
> 1)APIをうまく使う方法

恐らく、質問者さんが探し当てたものと思われる記事を見ましたが、こちらはプリンタにエスケープシーケンスと呼ばれる信号を送り、「両面に設定を変更しなさい」と命令する手順かと思います。
プリンタがそういうコードに対応しているのが前提ですす。(対応していないプリンタではゴミが印刷されます。)
また、「両面に設定を変更しなさい」と命令しても、Excelが「これ、片面で印刷しといて」と命令を出すのなら、デフォルトの設定を変更する意味しかないですし。

APIというのは、アプリケーション・プログラム・インターフェースの名前が示すと通りインターフェースですから、アプリケーション側がインターフェースを提供していない部分に関しては、どうにも出来ません。
両面印刷の設定に関しては、こちらが提供されていないんじゃないかと思います。


> 2)Excelファイルが持っていると思われるプリンタ設定の変更

こちらに関しては、同じシートに対して片面設定<->両面設定を切り替えた物を別名で保存すれば、Stirlingなどのバイナリエディタで比較する事で、対象の設定箇所が絞り込めそうです。
ただ、私が確認した所、数バイト書き換えを行う必要があり、ワークシートの内容が異なる場合や、別のプリンタでの両面設定に対応するか疑問です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

1)APIを使う方法ですが、
"Microsoft Knowledge Base" に 
「Windows の通常使うプリンタを取得および設定する方法」が記載されていました(WORD用?)。
http://support.microsoft.com/default.aspx?scid=k …

このVBAの使える部分をエクセルで実行したところ、通常使うプリンタの印刷設定を両面設定にする事はできました(できない項目もあります)。

ただ、「通常使うプリンタの印刷設定」を変更できても、現在開いているシートの印刷設定が変わりません。
( 回答に書いてもらった通り、結局、APIを使ってもこれだけでは不十分なようです)

しかたがないので、新しいブックを作成し、両面印刷したいシートの内容とページ設定の内容をコピーする形で対応してみました。
(*シートそのものをコピーすると印刷設定までコピーされてしまいます)

この方法でなんとか両面印刷ができましたが、
新規ブックへのコピーに時間がかかるのと、APIを使う不安が残るため、あまりいい方法ではなさそうです。


2)Excelファイルが持っていると思われるプリンタ設定の変更

ファイルの比較までして頂いてありがとうございます。
やはりどこかに記録されいるのでしょう。
ただ、こちらもVBAから設定できるレベルではなさそうですね。その方法が公開されるまで、今はあきらめようと思います。


ところで、No.3の方の回答を見て思いついた方法ですが、
プリントアウトの情報を一旦ファイルに落として、
そのファイルを(API等で)両面設定をしたプリンタに出力するというものです。
 印刷設定で”ファイルへ出力する”にチェックをすれば、*.prn の形式でファイルに落とせるとは思いますが、そのファイルの情報をどうやってプリンタに送ればよいのかがわからず断念しました。

個人別に対応するしかないのですが、No.2の方の方法が間違いがなさそうです。

お礼日時:2006/02/22 00:37

#3です。

はじめての回答で手違いしてしまいしつれいしました。
    • good
    • 0

Private Sub CommandButton1_Click()


Range("A1:AM44").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range("a1").Select

End Sub
    • good
    • 0

プリンタのデフォルト設定を両面印刷にするとスムーズではないでしょうか?



以下Windowsユーザと勝手に推測して手順を…。

スタート-設定-プリンタで、「プリンタの追加」で、現在お使いのプリンタの設定をもう一度行います。
一通り設定が済んだら、先ほど追加したプリンタのアイコンを右クリック-プロパティを開きます。
印刷設定というボタンがありますので、ここで両面印刷できるように設定をします。
設定が終わったらアイコンの名前を(xxx(両面))のようにするといいと思います。
そして、エクセルで印刷をする時に「ファイル」-「印刷」で、先に作った(xxx(両面))を指定すれば両面印刷になります。
また、(xxx(両面))を通常使うプリンタに設定すれば、印刷ボタンをおしただけで両面になります。

文面を拝見して、PCにはとてもお詳しい感じを受けたのですが、
こんな知識でもお役に立てたら嬉しく思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

質問内容に書き忘れてしまいましたが、Windowsの話ですので、アドバイス頂いた通り、印刷時にプリンタ名を選択する事で解決できると思います。

ただ、複数の人に利用してもらう場合は、PCのプリンタ設定を個別に設定する事になるため、どうしようか悩む所です。両面プリンタの設定を自動で行うsetup.exe等のプログラムを用意しなければいけないのであれば、違う方法を考えようと思っていました。

自分自身で対応するのはこの方法がベストと思います。ありがとうございました。

お礼日時:2006/02/12 11:08

> エクセルシートのプリンタドライバ



シートはプリンタドライバを持っていません。
シートは用紙のサイズ、余白の大きさなどの設定を持っていますが、この中に両面の設定は含まれません。

両面設定を行うか否かは、Windowsがプリンタの現在の印刷設定として管理しているのでは?

--
片面、両面で印刷する事があり、この設定の切り替えを容易に行いたい。
でしたら、印刷補助用のツールを利用する事をお勧めします。

FinePrint
http://www.nsd.co.jp/share/fineprint/

この回答への補足

回答ありがとうございます。

シートには両面の設定等は含まれないという事でしたが、試しに3枚のシートで異なるプリンタ設定をしてみたところ、保存したファイルを読み直しても、シート別にプリンタ設定が異なっていました。

Windowsの現在の印刷設定は、新規に作成したブックに反映され、それ以降は、エクセルで設定したプリンタ設定の情報を”どこか”に記録してあるのではと思っています。
(試行錯誤や他の情報からの推測でしかないのですが)

有効な解決策があるような気がしているのですが、決め手になる情報が見つからない状況です。

補足日時:2006/02/12 11:13
    • good
    • 0

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

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