VBA入門
ページ設定(PageSetup,PageBreak)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2022-08-16

第73回.ページ設定(PageSetup,PageBreak)


VBAで印刷のページ設定をするには、PageSetupオブジェクトのプロパティを設定することで行います。


基本的には、事前に印刷するシートのページ設定をしておくことが望ましいのですが、
VBAで作成したシート等、事前にページ設定することができない場合はマクロVBAで印刷のページ設定をします。


PageSetupオブジェクト

PageSetupオブジェクトのプロパティ一覧

名前 説明
AlignMarginsHeaderFooter Excelでヘッダーとフッターをページ設定オプションの余白セットを使用して揃える場合、Trueを返します。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
Application 対象となるオブジェクトが指定されない場合は、Excelアプリケーション(Applicationオブジェクト)を返します。
対象となるオブジェクトが指定された場合は、指定されたオブジェクトを作成したApplicationオブジェクトを返します。
OLEオートメーションを使っていて、オブジェクトのアプリケーションにアクセスするときなどに、このプロパティを使います。値の取得のみ可能です。
BlackAndWhite Trueの場合、対象となるシートのセルや描画オブジェクトを白黒印刷します。値の取得および設定が可能です。ブール型(Boolean)の値を使用します。
BottomMargin 下余白の大きさをポイント単位で設定します。
(ポイント:印刷する文字のサイズ(高さ)を指定する基本単位。1ポイントは、約0.0353cm(1/72インチ)です。)
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
CenterFooter PageSetupオブジェクトでフッター情報を中央揃えします。
値の取得および設定が可能です。文字列型(String)の値を使用します。
CenterFooterPicture フッターの中央のセクションの画像を表すGraphicオブジェクトを取得します。
画像についての属性を設定するために使用します。
CenterHeader PageSetupオブジェクトでヘッダー情報を中央揃えします。
値の取得および設定が可能です。
文字列型(String)の値を使用します。
CenterHeaderPicture ヘッダーの中央のセクションの画像を表すGraphicオブジェクトを取得します。
画像についての属性を設定するために使用します。
CenterHorizontally Trueの場合、印刷時のシートのページレイアウトの設定を、水平方向の中央寄せ(余白を除く)にします。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
CenterVertically Trueの場合、印刷時のシートのページレイアウトの設定を、垂直方向の中央寄せ(余白を除く)にします。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
Creator 現在のオブジェクトが作成されたアプリケーションを示す32ビットの整数を取得します。
値の取得のみ可能です。
長整数型(Long)の値を使用します。
DifferentFirstPageHeaderFooter Trueに設定すると、先頭ページでは他のページと異なるヘッダーとフッターが使用されます。
値の取得および設定が可能です。
長整数型(Boolean)の値を使用します。
Draft Trueの場合、シートの印刷時にグラフィックスを印刷しない設定(簡易印刷)になります。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
EvenPage ブックまたはセクション内の偶数ページで、文字列の配置を取得または設定します。
FirstPage ブックまたはセクション内の先頭ページで、文字列の配置を取得または設定します。
FirstPageNumber 印刷するシートの先頭ページで使用される番号を設定します。
xlAutomaticの場合、自動的に先頭ページの番号が選択されます。
既定値はxlAutomaticです。値の取得および設定が可能です。
長整数型(Long)の値を使用します。
FitToPagesTall ワークシートを印刷するときに、縦何ページ分で収めるかを示す値を指定します。
値の取得および設定が可能です。
このプロパティは、ワークシートだけを対象とします。バリアント型(Variant)の値を使用します。
FitToPagesWide ワークシートを印刷するときに、横何ページ分で収めるかを示す値を指定します。
このプロパティは、ワークシートだけを対象とします。
値の取得および設定が可能です。
バリアント型(Variant)の値を使用します。
FooterMargin フッターの余白(用紙の下端からフッターまでの距離)の値をポイント単位で設定します。
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
HeaderMargin ヘッダーの余白(用紙の上端からヘッダーまでの距離)の値をポイント単位で設定します。
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
LeftFooter ブックまたはセクション内の左のフッターで、文字列の配置を取得または設定します。
LeftFooterPicture フッターの左のセクションの画像を表すGraphicオブジェクトを取得します。
画像についての属性を設定するために使用します。
LeftHeader ブックまたはセクション内の左のヘッダーで、文字列の配置を取得または設定します。
LeftHeaderPicture ヘッダーの左のセクションの画像を表すGraphicオブジェクトを取得します。
画像についての属性を設定するために使用します。
LeftMargin 左余白の大きさをポイント単位で設定します。
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
OddAndEvenPagesHeaderFooter Trueを設定すると、指定したPageSetupオブジェクトの奇数ページと偶数ページに異なるヘッダーとフッターを設定できます。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
Order 大きいワークシートを複数ページに分けて印刷するときにページ番号を付ける順番を表す、XlOrderクラスの定数を取得または設定します。
Orientation 印刷の向きが縦か横かを表すXlPageOrientationクラスの定数を取得または設定します。
Pages Pagesコレクションに含まれるページのカウントまたはアイテム番号を取得または設定します。
PaperSize 用紙サイズを設定します。値の取得および設定が可能です。
XlPaperSizeクラスの定数を使用します。
Parent 指定されたオブジェクトの親オブジェクトを取得します。値の取得のみ可能です。
PrintArea 印刷するセル範囲を、コード記述時の言語のA1形式の文字列で設定します。
値の取得および設定が可能です。
文字列型(String)の値を使用します。
PrintComments シートへのコメントの印刷方法を設定します。
値の取得および設定が可能です。
XlPrintLocationクラスの定数を使用します。
PrintErrors 表示される印刷エラーの種類を指定するXlPrintErrorsクラスの定数を設定します。
この機能を使用して、ユーザーはワークシートの印刷時にエラー値の表示を抑止することができます。
値の取得および設定が可能です。
PrintGridlines Trueの場合、セルの枠線をページに印刷します。このプロパティは、ワークシートだけを対象とします。値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
PrintHeadings Trueの場合、行と列の番号をページに印刷します。
このプロパティは、ワークシートだけを対象とします。値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
PrintNotes Trueの場合、文末脚注のようにシート印刷時にセル内のコメントも印刷します。
このプロパティは、ワークシートのページだけを対象とします。
値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
PrintQuality 印刷品質を返します。値の取得および設定が可能です。
バリアント型(Variant)の値を使用します。
PrintTitleColumns 各ページの左端に常に表示するセルを含む列を、コード記述時の言語のA1形式の文字列で設定します。
値の取得および設定が可能です。
文字列型(String)の値を使用します。
PrintTitleRows 各ページの上端に常に表示するセルを含む行を、コード記述時の言語のA1形式の文字列で設定します。
値の取得および設定が可能です。文字列型(String)の値を使用します。
RightFooter ページの右端とフッターの右端の距離をポイント単位で設定します。
値の取得および設定が可能です。
単精度浮動小数点型(String)の値を使用します。
RightFooterPicture フッターの右のセクションの画像を表すGraphicオブジェクトを取得します。
画像の属性を設定するために使用します。
RightHeader 右側に配置されたヘッダーを設定します。
値の取得および設定が可能です。
文字列型(String)の値を使用します。
RightHeaderPicture 右のヘッダーに表示する画像を指定します。
値の取得のみ可能です。
RightMargin 右余白の大きさをポイント単位で設定します。
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
ScaleWithDocHeaderFooter 文書のサイズが変更された場合に、ヘッダーとフッターのサイズが文書に合わせて変更されるかどうかを設定します。値の取得および設定が可能です。
ブール型(Boolean)の値を使用します。
TopMargin 上余白の大きさをポイント単位で設定します。
値の取得および設定が可能です。
倍精度浮動小数点型(Double)の値を使用します。
Zoom ワークシートを印刷するときの拡大率または縮小率(%)を、10~400の範囲で表すバリアント型(Variant)の値を取得、または設定します。
ポイント:印刷する文字のサイズ(高さ)を指定する基本単位。1ポイントは、約0.0353cm(1/72インチ)です。

すべてのページ設定属性(左余白、下余白、用紙サイズなど)が、プロパティとして含まれています。

このように非常に多くのプロパティがあり、とても覚えきれません。
実務としては、「マクロの記録」を使い、必要な設定部分をコピーペーストで使用する事をお勧めします。
自動記録されたVBAコードを読む時に、上記の一覧を参考にしてください。


PrintCommunicationプロパティ

プリンターとの通信が有効かどうかを取得/設定する、Applicationのプロパティです。
PageSetupプロパティを設定するコードの実行速度を速くするには、PrintCommunicationプロパティをFalseに設定します。

PrintCommunicationがTrueのままページ設定を行うと、1行1行のプロパティ設定がとても時間がかかってしまいます。
少なくとも、複数のプロパティの設定を行う時はPrintCommunicationをFalseにしてから設定してください。

Application.PrintCommunication = False
With ActiveSheet.PageSetup
  'ページ設定
End With
Application.PrintCommunication = True


ヘッダー・フッターのプロパテの設定方法

PageSetup.プロパティ = 値
以下では、ヘッダー・フッターのプロパテを紹介します。

プロパティ 説明
LeftHeader 左側ヘッダー
CenterHeader 中央部ヘッダー
RightHeader 右側ヘッダー
LeftFooter 左側フッター
CenterFooter 中央部フッター
RightFooter 右側フッター

設定値には、書式コードやシステム情報の、特殊コードが使えます。

コード 意味
&D 日付
&T 時刻
&F ファイル名
&A シート名
&P ページ
&N 総ページ
&Z パス
&B 太字
&L 文字列を左詰めにします
&C 文字列を中央揃えにします
&R 文字列を右詰めにします
&E 文字列に二重下線をつけます
&X 上付き文字にします
&Y 下付き文字にします
&B 文字列を太字にします
&I 文字列を斜体にします
&U 文字列に下線を付けます
&S 文字列に取り消し線を付けます

使用例
Worksheets(1).PageSetup.CenterFooter="&P/&N"
中央部フッターに、「ページ/総ページ」

Worksheets(1).PageSetup.RightHeader="&B&D"
右側ヘッダーに、日付を太字にしています。


余白の設定方法

自動記録で作成されるVBAでは、余白がインチで記録されます。

マクロ VBA 印刷 余白

この自動記録は、

Application.PrintCommunication = False
With ActiveSheet.PageSetup
  '・・・
  .LeftMargin = Application.InchesToPoints(0.708661417322835)
  .RightMargin = Application.InchesToPoints(0.708661417322835)
  .TopMargin = Application.InchesToPoints(0.748031496062992)
  .BottomMargin = Application.InchesToPoints(0.748031496062992)
  .HeaderMargin = Application.InchesToPoints(0.31496062992126)
  .FooterMargin = Application.InchesToPoints(0.31496062992126)
  '・・・
End With
Application.PrintCommunication = True

ページ設定のダイアログで指定する数値はセンチですが、
自動記録ではインチに変換されて記録されます。

PageSetupにおいて、インチではなくセンチで設定するには、
Application.InchesToPoints
これの代わりに、
Application.CentimetersToPoints
こちらを使用してください。

詳細は、以下のページを参照してください。
印刷ページ設定の余白をセンチで指定する(CentimetersToPoints)
印刷のページ設定の余白サイズは、自動記録ではApplication.InchesToPointsで記録されます、しかし、ページ設定のダイアログ画面ではセンチで指定しているので、どうもしっくりしません。できれば、余白サイズはセンチで指定したいものです。


印刷範囲の設定/クリア:PrintArea

印刷範囲を設定/クリアするには、PrintAreaプロパティを使います。
PrintAreaプロパティは値の設定と取得ができます。

印刷範囲の設定

PrintAreaプロパティにセル範囲のセルアドレスを代入することで、印刷範囲を設定出来ます。

ActiveSheet..PrintArea = ”A1:D20"

印刷範囲がRangeオブジェクトに入っている場合は、Addressプロパティで取得したセルアドレスを使用します。
Addressプロパティは、セル範囲(Rangeオブジェクト)の参照範囲を表す文字列の値を返します。引数により、参照方法($の付いた絶対参照)や形式(R1C1形式)を指定できます。Addressは、マクロVBAの中で処理の一環として使う事はあまり多くないかもしれませんが、VBA作成過程ではRangeオブジェクト変数…

Dim myRange As Range
Set myRange = Range("A1:D20")
ActiveSheet.PageSetup.PrintArea = myRange.Address

印刷範囲のクリア

PrintAreaプロパティに""を代入することで印刷範囲をクリアできます。

ActiveSheet.PageSetup.PrintArea = ""

印刷範囲の設定/クリアについては、以下でより詳しく解説しています。
印刷範囲の設定・印刷範囲のクリア|VBA技術解説
・印刷範囲の設定 ・印刷範囲の取得 ・印刷範囲のクリア


総ページ数:Pages.Count

印刷される総ページを取得するには、PageSetupのPagesコレクションの件数を取得します。

Worksheets(1).PageSetup.Pages.Count

ページ設定の間違いで大量に印刷されてしまうといったことを避けたい場合は、印刷の前にこの数値をチェックすると良いでしょう。


改ページの位置を設定:PageBreak

改ページを設定するには、RangeオブジェクトのPageBreakプロパティを使います。
これまでに出てきたプロパティはPageSetupのプロパティですが、PageBreakはRangeのプロパィです。

PageBreakプロパティでは、自動改ページと手動改ページのどちらの位置も取得できますが、設定できるのは手動改ページの位置だけです。

設定値は、xlPageBreakManualまたはxlPageBreakNone(xlNoneでも良い)です。
指定したセル位置の左または上で改ページされます。

ActiveSheet.Rows(20).PageBreak = xlPageBreakManual
ActiveSheet.Columns("H").PageBreak = xlPageBreakManual

改ページを削除する場合は、xlPageBreakNoneまたはxlNoneを設定してください。

ActiveSheet.Rows(20).PageBreak = xlPageBreakNone
ActiveSheet.Columns("h").PageBreak = xlNone

ワークシートにあるすべての手動改ページを削除するには、シートのCellsのPageBreakをxlPageBreakNoneに設定してください。

ActiveSheet.Cells.PageBreak = xlPageBreakNone


最後に

マクロVBAで全てのページ設定のプロパティを設定することは非常に大変です。

あらかじめページ設定してあるシートを雛形として使い、
都度変化する一部のプロパティのみVBAで変更するといった方法も検討してみましょう。




同じテーマ「マクロVBA入門」の記事

第71回.印刷(PrintOut)
第72回.印刷プレビュー(PrintPreview)
第139回.エクスポート(PDF/XPS)
第73回.ページ設定(PageSetup,PageBreak)
第74回.ファイルを開くダイアログ(GetOpenFilename)
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)
第76回.ファイルダイアログ(FileDialog)
第77回.組み込みダイアログ(Dialogs,xlDialogPrint)
第78回.総合練習問題8
第79回.ファイル操作Ⅰ(Dir)
第80回.ファイル操作Ⅰ(その他)


新着記事NEW ・・・新着記事一覧を見る

VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ