こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで印刷時各シートをページに変換

VBA初心者です。よろしくお願いします。
エクセルのVBAでやりたいことは下記事項です。
(1)csvファイルを読み込みシート1に展開する。
(2)シート1のデータをシート2に埋め込みグラフを作成する。
(3)シート3にシート2の部分的に拡大した埋め込みグラフを作成する。
(4)シート4に運転時の各設定値を表作成する。
(5)シート2から4までを選択したプリンタで印刷する。印刷はプリンタのプロパティ切り替えで両面印刷もできる。
ざっと、上記のことをやりたいのですが、なんとかインターネット等で調べて(1)から(4)までは動作するプログラムができましたが(5)のシート2から4までを選択したプリンタで印刷することは1ページに1シート片面印刷はできるのですが両面印刷でシート2から4までを印刷する部分が分かりません。
シート2,3はグラフなので用紙いっぱいに印刷したい。

どうすればよいか皆様ご教授よろしくお願いします。
                                     以上

投稿日時 - 2011-03-08 21:35:56

QNo.6579535

すぐに回答ほしいです

質問者が選んだベストアンサー

>Windowsメニューから...の説明がよくわかりません。
基本的な設定自体は【手作業】でやってください、という事です。


プリンタの両面印刷はプリンタに依存する機能です。
ExcelのBookやSheetに対して設定を変更したりするものではありません。
ExcelVBAだけではできません。
>できれば、そのVBAリストを載せてもらえばありがたいのですが。
http://support.microsoft.com/kb/828638/ja
こちらの記事内容が理解できれば、かつ、プリンタが対応できれば
Sub test()
  Const PRT = "LP-M5500" 'プリンタのDeviceIDがこれだと仮定して
  SetPrinterDuplex PRT, 2
  Sheets(Array("Sheet1", "Sheet2")).PrintOut ActivePrinter:=PRT
End Sub
こんな感じで可能ですが。


難しければ、事前準備として【手作業】で
Windowsスタートメニューからの[設定]-[コントロールパネル]-[プリンタとFAX]。
WindowsOS自体のプリンタ設定を行います。
例えば"LP-M5500"というプリンタで印刷したいとして、
この"LP-M5500"をもう1つ別名で追加登録して、両面印刷をデフォルトに設定します。
これを"LP-M5500両面"という名前で登録したとしたら、
印刷時のVBAは
Sheets(Array("Sheet1", "Sheet2")).PrintOut ActivePrinter:="LP-M5500両面"
これで両面印刷できます。

投稿日時 - 2011-03-09 20:58:18

お礼

早速のご回答すみません。
なにせ、vba等のプログラムはあまりくわしくなくて...
とりあえず、明日会社で手作業の手順で試してみます。
結果はおってご報告します。
ありがとう御座いました。
  以上

投稿日時 - 2011-03-09 21:28:43

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Excelの印刷メニューではなく、Windowsメニューから
両面印刷したいプリンタのプロパティを開き、両面印刷の設定をしてください。
(プリンタのデフォルト設定にする)
その後、Excel側で一旦別のプリンタに切り替えた後、
再度、両面印刷設定したプリンタを選択して印刷すれば、できると思います。

必要であれば、そのプリンタを別名で追加登録して、
デフォルト設定を片面|両面の2通りに分ける事で
片面|両面印刷に関するVBAでの切替が比較的簡単にできます。


>シート2,3はグラフなので用紙いっぱいに印刷したい。
こちらは印刷時の用紙の大きさ以上にワークシート上に拡大配置するようにして、
[ページ設定]で「..ページ数に合わせて印刷」設定を選ぶと良いです。

投稿日時 - 2011-03-09 15:01:01

お礼

ご回答ありがとうございます。
Windowsメニューから...の説明がよくわかりません。
できれば、そのVBAリストを載せてもらえばありがたいのですが。
よろしくお願いします。

投稿日時 - 2011-03-09 19:28:45

あなたにオススメの質問