Excel印刷でイライラしないためのマクロ基本Tips:Excelマクロ/VBAで始める業務自動化プログラミング入門(11)(4/4 ページ)
途中で切れて2ページ目にずれ込まないように表を1ページに収める方法、印刷時に繰り返し出したいヘッダーやフッターのさまざまな設定、改ページによるずれ込みを防ぐための「印刷範囲」の固定、「印刷タイトル」(見出し)の固定、「印刷プレビュー」の表示、印刷の実行方法などを解説【Windows 10、Excel 2016に対応】。
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
表の「印刷タイトル行」を設定するには、PrintTitleRowsプロパティを設定する。表の「印刷タイトル列」を設定するには、PrintTitleColumnsプロパティを使用する。
今回は、表の「印刷タイトル行」を設定するので、PrintTitleRowsプロパティに、「$3:$3」と設定して、行のタイトルに3行目を設定している。PrintColumnsには今回は何も設定しない。
コラム「Excelの絶対参照と相対参照」
PrintTitleRowsプロパティには$を使用して絶対参照としている。「$3:$3」のように行や列が変動しても変わらないものを「絶対参照」という。
絶対参照で、参照セルを設定する場合は、「$」マークを先頭に付ける。「A1」を絶対参照する場合は「$A$1」と記述する。
また、セル範囲に合わせて行番号や列番号が変化するものを「相対参照」という。普通に「A1」「B1」のように記述する。
実行すると図7のようになる。
PrintOutメソッドで印刷の実行
最後に「印刷の実行」について解説する。いくら印刷プレビューで確認できても印刷できなければ意味がない。
印刷を実行するにはPrintOutメソッドを使用する。書式は下記の通りだ。
PrintOutメソッドの書式
オブジェクト.PrintOut From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate,PrintToFileName,IgnorePrintAreas
各引数の意味は表3を参照してほしい。
引数 | 意味 |
---|---|
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
「社員売上金額」のワークシートを「1部」だけ印刷する。[印刷実行]というボタンを作成して、それにリスト5のマクロを登録して、実際に印刷してみた。
Array関数を使って複数のシートを印刷する
次に、複数のシートを印刷する方法を見てみよう。「社員売上金額」以外に「今年度の目標金額」というワークシート(図8)があった場合、このワークシートも印刷してみよう。
この「社員売上金額」と「今年度の目標金額」のワークシートを同時に印刷するにはリスト6のマクロを書く。
Sub 複数シートの印刷() Worksheets(Array("社員売上金額", "今年度の目標金額")).PrintOut Copies:=1 End Sub
連載第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年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。