両面・片面印刷、ページレイアウト等を設定することは可能か?

Question 51.4 印刷 Previous Next
印刷についての質問です。
DBにデータを入力し、その値を数種類のフォーマットの表に出力するマクロを作成しています。

各表はエクセルのシート別に存在し、それぞれ出力設定も異なります。
  表1(Sheet1)はA3両面・2ページ/枚、
  表2(Sheet2)はA4片面・1ページ/枚。。。というように。

現在の所、各表毎(シート毎)に上記条件の出力設定を記憶させています。(ページ設定の「ページ」タブ内で設定できる項目について設定を記憶させています。プリンターのオプション内容をシート自体に記憶させる事が出来ないので、表1のような設定の場合は、通常使うプリンターのデフォルト設定を表1の設定にしています。)
マクロからは特に印刷の設定の指定はせずに、単に以下の様に印刷させているだけです。
    Sheets(Sheet1).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Sheets(Sheet2).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
この場合、使用するPC毎にシート毎に印刷設定をしなくてはなりません。
マクロで、プリンターの両面印刷、片面印刷、ページレイアウト、等を設定することは可能でしょうか? 宜しくお願いいたします。
Answer   Copyright (C) 2002.1.15 永井善王
<知りたいことは、2つですね。

1. 印刷のページ設定
ページ設定の「ページ」タブ内で設定できる項目についてはマクロで設定できます。マクロを自動記録して、それを使えば解決するかと思います。
自動記録されたマクロの各行の意味がわからない場合は、このホームページの[Macro]コーナーの[印刷・基本型]の「5)ページ詳細設定(タイトル、余白、用紙サイズ、他)」を参考にしてください。

2. プリンターのオプション設定
両面印刷のようにプリンターのドライバーの機能に依存するものは、マクロを自動記録することは不可能と思います。
プリンターのオプション
どうしてもマクロで本格的に制御したいならば SendKeysステートメントを使って、右図のようなプロパティダイアログボックスを操作することになるかと思います。
SendKeysについては、このホームページにもいくつかの解説があります。見たい場合は[Serach]コーナーのテキストボックスに「sendkeys」と入力して[検索]ボタンをクリックです。

簡便法としてはマクロで、ページ設定ダイアログボックスを表示してあげて、ユーザーの設定忘れを防止すれば効果があるかも知れません。
[Macro]コーナーの[印刷・基本型]の「4)ページ設定」の「ページ設定ダイアログボックスを表示する」を参考にして、研究してみてください。


 

Excel VBA Macro