連載
» 2016年09月15日 05時00分 公開

Excel印刷でイライラしないためのマクロ基本TipsExcelマクロ/VBAで始める業務自動化プログラミング入門(11)(4/4 ページ)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3|4       

PrintTitleRows/Columnsプロパティで「印刷タイトル」(見出し)を固定するには

 次に「印刷タイトル」(見出し)を設定してみよう。

 通常の印刷では、複数ページにわたったデータでは、例えば2枚目に表示される印刷には、特に設定しない限り「表の印刷タイトル行」は表示されない。今回は、2ページ目にずれ込んだ表にも「印刷タイトル行」を付けてみよう。「印刷タイトル行」を固定することで、わざわざ1枚目の表をめくってみて項目名を確認する必要がなくなる。

 マクロはリスト4のようになる。

Sub 表の項目名の印刷()
  With Worksheets("社員売上金額").PageSetup
    .Zoom = 100
    .PrintArea = "B1:E45"
    .PrintTitleRows = "$3:$3"
    .PrintTitleColumns = ""
  End With
  Worksheets("社員売上金額").PrintPreview
End Sub
リスト4 印刷する表の項目の表示

 表の「印刷タイトル行」を設定するには、PrintTitleRowsプロパティを設定する。表の「印刷タイトル列」を設定するには、PrintTitleColumnsプロパティを使用する。

 今回は、表の「印刷タイトル行」を設定するので、PrintTitleRowsプロパティに、「$3:$3」と設定して、行のタイトルに3行目を設定している。PrintColumnsには今回は何も設定しない。

コラム「Excelの絶対参照と相対参照」

 PrintTitleRowsプロパティには$を使用して絶対参照としている。「$3:$3」のように行や列が変動しても変わらないものを「絶対参照」という。

 絶対参照で、参照セルを設定する場合は、「$」マークを先頭に付ける。「A1」を絶対参照する場合は「$A$1」と記述する。

 また、セル範囲に合わせて行番号や列番号が変化するものを「相対参照」という。普通に「A1」「B1」のように記述する。


 実行すると図7のようになる。

図7 印刷が2ページにずれ込んでも「印刷タイトル行」が表示されている

PrintOutメソッドで印刷の実行

 最後に「印刷の実行」について解説する。いくら印刷プレビューで確認できても印刷できなければ意味がない。

 印刷を実行するにはPrintOutメソッドを使用する。書式は下記の通りだ。

PrintOutメソッドの書式

オブジェクト.PrintOut From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrintToFileName,IgnorePrintAreas


 各引数の意味は表3を参照してほしい。

表3 PrintOutメソッドの引数の意味
引数 意味
From 印刷開始ページ番号
To 印刷終了ページ番号
Copies 印刷部数
Preview 印刷前にプレビューに切り替えるかどうかをTrueまたはFalseで設定。切り替える場合はTrue、既定値は切り替えないFalseになっている
ActivePrinter プリンタ名
PrintToFile ファイルに出力する場合はTrueを設定。その場合は、下記の引数「PrintToFileName」でファイル名を設定する
Collate 部単位での印刷時にはTrueを設定
PrintToFileName PrintToFileにTrueを設定した場合の、ファイル名を設定
IgnorePrintAreas 「印刷範囲」を無視する場合は、True
参考「Worksheet.PrintOut Method - MSDN

 図6の「社員売上金額」を印刷するマクロはリスト5だ。

Sub 印刷の実行()
  Worksheets("社員売上金額").PrintOut Copies:=1
End Sub
リスト5 印刷を実行する

 「社員売上金額」のワークシートを「1部」だけ印刷する。[印刷実行]というボタンを作成して、それにリスト5のマクロを登録して、実際に印刷してみた。

Array関数を使って複数のシートを印刷する

 次に、複数のシートを印刷する方法を見てみよう。「社員売上金額」以外に「今年度の目標金額」というワークシート(図8)があった場合、このワークシートも印刷してみよう。

図8 シートが2枚ある

 この「社員売上金額」と「今年度の目標金額」のワークシートを同時に印刷するにはリスト6のマクロを書く。

Sub 複数シートの印刷()
  Worksheets(Array("社員売上金額", "今年度の目標金額")).PrintOut Copies:=1
End Sub
リスト6 複数シートの印刷

 連載第9回にも出てきたが、Array関数を使ってブック内の複数のシートを参照する。Array関数を使うとリスト6のように記述して、複数のワークシートを印刷できる。

 「複数のワークシート印刷」ボタンを作成して、リスト6のマクロを登録して、実行してみた。これも問題なく印刷できた。

次回は、フォームとコントロール

 以上で「印刷」に関する解説は終了だ。次回は「フォームの作成」や「コントロール」の使用方法について解説する。お楽しみに。

■更新履歴

【2016/9/15】Windows 10、Excel 2016に対応しました。


参考書籍

著者プロフィール

PROJECT KySS 薬師寺 国安(やくしじ くにやす)

1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。

 

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。