【Word VBA】A4原稿をA4用紙に2ページ分印刷する

2011年7月18日

「なでしこジャパン」おめでとう!ありがとう!

興奮がやみませんね。

で、いきなり昨日の印刷設定です(笑)。

【Word】印刷設定でコストダウン(1)」と「【Word】印刷設定でコストダウン(2) 」の流れで、またまたコストダウンに関するマクロです。

開発の背景

ある事業所では、プリンターの印刷を計数して、月間の印刷枚数をプリンターのメンテ会社に報告をしています。「カウンター料金」などと呼ばれる従量料金制度です。

そこで、この事業所のリーダーの方は考えました。

「A4の原稿をA3用紙に2ページ分印刷すれば、印刷枚数が半分になる!」

ちょっとしたコストダウンですね(笑)。印刷枚数が多ければ多いほど差が出てきます。

これ、実際にお話しをうかがった話ですから、このブログ読者の方々にもお役に立つかもしれません。

そんなわけで、今回紹介するマクロは、「A4原稿をA3用紙に2ページ分印刷するマクロ」です。

考え方

【Word】印刷設定でコストダウン(2)」で紹介したとおり、ドライバーに印刷のレイアウト設定ができるのですが、今回は、ドライバーを操作するのではなく、Wordの機能を使って、「A4原稿をA3用紙に2ページ分印刷」を実現したいと思います。

操作は以下の通りです。

(1)「印刷」ダイアログボックスでA3用紙のあるプリンタードライバを選択して、印刷時の1枚当たりのページ数を設定します。

Word 2003の例
(Word 2003の例 2ページを選択)

Word 2010の例
(Word 2010の例。2ページ/枚を選択)

(2)「ページ設定」ダイアログボックスで、A3用紙が入っている用紙トレイを、1ページ目および2ページ目以降で選択します。

手差しにA3用紙がある例
(手差しにA3用紙がある場合)

これをマクロで自動化します。

準備

日経パソコンの記事「複雑な印刷設定もワンクリックで 」で紹介したマクロを使って、プリンター名と用紙トレイの番号を取得します。

マクロ


Sub A4原稿をA3用紙に2ページ分印刷()
  Dim myFirstTray As String
  Dim myOtherTray As String
  Dim myPrinter As String
  With ActiveDocument.PageSetup
    myFirstTray = .FirstPageTray
    myOtherTray = .OtherPagesTray
    myPrinter = ActivePrinter
    ActivePrinter = "プリンター名"
    .FirstPageTray = トレイ番号
    .OtherPagesTray = トレイ番号
    ActiveDocument.PrintOut PrintZoomColumn:=2, PrintZoomRow:=1
    ActivePrinter = myPrinter
    .FirstPageTray = myFirstTray
    .OtherPagesTray = myOtherTray
  End With
End Sub

 

-コード
-