第73回.ページ設定(PageSetup,PageBreak)
VBAで印刷のページ設定をするには、PageSetupオブジェクトのプロパティを設定することで行います。
VBAで作成したシート等、事前にページ設定することができない場合はマクロVBAで印刷のページ設定をします。
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)の値を取得、または設定します。 |
実務としては、「マクロの記録」を使い、必要な設定部分をコピーペーストで使用する事をお勧めします。
自動記録されたVBAコードを読む時に、上記の一覧を参考にしてください。
PrintCommunicationプロパティ
PageSetupプロパティを設定するコードの実行速度を速くするには、PrintCommunicationプロパティをFalseに設定します。
少なくとも、複数のプロパティの設定を行う時はPrintCommunicationをFalseにしてから設定してください。
Application.PrintCommunication = False
With ActiveSheet.PageSetup
'ページ設定
End With
Application.PrintCommunication = True
ヘッダー・フッターのプロパテの設定方法
以下では、ヘッダー・フッターのプロパテを紹介します。
プロパティ | 説明 |
LeftHeader | 左側ヘッダー |
CenterHeader | 中央部ヘッダー |
RightHeader | 右側ヘッダー |
LeftFooter | 左側フッター |
CenterFooter | 中央部フッター |
RightFooter | 右側フッター |
設定値には、書式コードやシステム情報の、特殊コードが使えます。
コード | 意味 |
&D | 日付 |
&T | 時刻 |
&F | ファイル名 |
&A | シート名 |
&P | ページ |
&N | 総ページ |
&Z | パス |
&B | 太字 |
&L | 文字列を左詰めにします |
&C | 文字列を中央揃えにします |
&R | 文字列を右詰めにします |
&E | 文字列に二重下線をつけます |
&X | 上付き文字にします |
&Y | 下付き文字にします |
&B | 文字列を太字にします |
&I | 文字列を斜体にします |
&U | 文字列に下線を付けます |
&S | 文字列に取り消し線を付けます |
使用例
中央部フッターに、「ページ/総ページ」
右側ヘッダーに、日付を太字にしています。
余白の設定方法
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
ページ設定のダイアログで指定する数値はセンチですが、
自動記録ではインチに変換されて記録されます。
Application.InchesToPoints
これの代わりに、
Application.CentimetersToPoints
こちらを使用してください。
印刷ページ設定の余白をセンチで指定する(CentimetersToPoints)
印刷範囲の設定/クリア:PrintArea
PrintAreaプロパティは値の設定と取得ができます。
印刷範囲の設定
ActiveSheet..PrintArea = ”A1:D20"
印刷範囲がRangeオブジェクトに入っている場合は、Addressプロパティで取得したセルアドレスを使用します。
Dim myRange As Range
Set myRange = Range("A1:D20")
ActiveSheet.PageSetup.PrintArea = myRange.Address
印刷範囲のクリア
ActiveSheet.PageSetup.PrintArea = ""
総ページ数:Pages.Count
Worksheets(1).PageSetup.Pages.Count
ページ設定の間違いで大量に印刷されてしまうといったことを避けたい場合は、印刷の前にこの数値をチェックすると良いでしょう。
改ページの位置を設定:PageBreak
これまでに出てきたプロパティはPageSetupのプロパティですが、PageBreakはRangeのプロパィです。
指定したセル位置の左または上で改ページされます。
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入門」の記事
第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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。