Excel VBAの覚え書([ページ レイアウト](PageSetupプロパティ)編)

2024-01-07

■WorksheetオブジェクトのPageSetupプロパティ

ページ・レイアウトに関する処理を行う場合、PageSetupオブジェクトのプロパティを使用します。

PageSetupオブジェクトは、WorksheetオブジェクトのPageSetupプロパティで取得します。

PageSetupプロパティの詳細

Microsoftのサイトで「PageSetupプロパティ」を調べると、以下のように記載されています。

  • 指定したオブジェクトのすべてのページセットアップ設定を含むPageSetupオブジェクトを返します。

また、オブジェクト・ブラウザでPageSetupプロパティを参照すると以下のように定義されており、何も引数を指定することなく、PageSetupオブジェクトを取得できることがわかります。

  1. Property PageSetup As PageSetup

■PageSetupオブジェクトの詳細

PageSetupオブジェクトのプロパティは下表の通りです(メソッドはありません)。

(PageSetupオブジェクトのプロパティ)

AlignMarginsHeaderFooterプロパティ
説明 ヘッダーとフッターを余白に合せて配置するかどうかを設定/取得
(Trueの場合、余白に合せて配置)
定義 Property AlignMarginsHeaderFooter() As Boolean
Applicationプロパティ(読み取り専用)
説明 Applicationオブジェクト(Excel)を取得
定義 Property Application() As Application
BlackAndWhiteプロパティ
説明 文書の要素が白黒で印刷されるかどうかを設定/取得
(Trueの場合、白黒印刷)
定義 Property BlackAndWhite() As Boolean
BottomMarginプロパティ
説明 下余白の値をポイントで設定/取得
定義 Property BottomMargin() As Double
CenterFooterプロパティ
説明 フッター中央の文字列を設定/取得
定義 Property CenterFooter() As String
CenterFooterPictureプロパティ(読み取り専用)
説明 フッター中央の画像を表すGraphicオブジェクトを取得
定義 Property CenterFooterPicture() As Graphic
CenterHeaderプロパティ
説明 ヘッダー中央の文字列を設定/取得
定義 Property CenterHeader() As String
CenterHeaderPictureプロパティ(読み取り専用)
説明 ヘッダー中央の画像を表すGraphicオブジェクトを取得
定義 Property CenterHeaderPicture() As Graphic
CenterHorizontallyプロパティ
説明 印刷位置を水平方向の中央に設定するかどうかを設定/取得
(Trueの場合、中央に設定)
定義 Property CenterHorizontally() As Boolean
CenterVerticallyプロパティ
説明 印刷位置を垂直方向の中央に設定するかどうかを設定/取得
(Trueの場合、中央に設定)
定義 Property CenterVertically() As Boolean
Creatorプロパティ(読み取り専用)
説明 オブジェクトを作成したアプリケーションの整数値を取得
(※)XlCreator列挙体は、以下の値のみ。
xlCreatorCode(1480803660):Macintosh版Excelでのシグネチャ
定義 Property Creator() As XlCreator
DifferentFirstPageHeaderFooterプロパティ
説明 先頭ページに別のヘッダー/フッターを使用するかどうかを設定/取得
(Trueの場合、別のヘッダー/フッターを使用)
定義 Property DifferentFirstPageHeaderFooter() As Boolean
Draftプロパティ
説明 グラフィックスなしでシートを印刷するかどうかを設定/取得
(Trueの場合、グラフィックスなしで印刷)
定義 Property Draft() As Boolean
EvenPageプロパティ(読み取り専用)
説明 偶数ページのPageオブジェクトを取得
定義 Property EvenPage() As Page
FirstPageプロパティ(読み取り専用)
説明 先頭ページのPageオブジェクトを取得
定義 Property FirstPage() As Page
FirstPageNumberプロパティ
説明 印刷時に使用される最初のページ番号を設定/取得

(※)xlAutomatic(-4105)の場合、自動設定(既定値)。

定義 Property FirstPageNumber() As Long
FitToPagesTallプロパティ
説明 印刷時に拡大縮小する縦方向のページ数を設定/取得
定義 Property FitToPagesTall() As Variant
FitToPagesWideプロパティ
説明 印刷時に拡大縮小する横方向のページ数を設定/取得
定義 Property FitToPagesWide() As Variant
FooterMarginプロパティ
説明 フッター余白の値をポイントで設定/取得
定義 Property FooterMargin() As Double
HeaderMarginプロパティ
説明 ヘッダー余白の値をポイントで設定/取得
定義 Property HeaderMargin() As Double
LeftFooterプロパティ
説明 フッター左の文字列を設定/取得
定義 Property LeftFooter() As String
LeftFooterPictureプロパティ(読み取り専用)
説明 フッター左の画像を表すGraphicオブジェクトを取得
定義 Property LeftFooterPicture() As Graphic
LeftHeaderプロパティ
説明 ヘッダー左の文字列を設定/取得
定義 Property LeftHeader() As String
LeftHeaderPictureプロパティ(読み取り専用)
説明 ヘッダー左の画像を表すGraphicオブジェクトを取得
定義 Property LeftHeaderPicture() As Graphic
LeftMarginプロパティ
説明 左余白の値をポイントで設定/取得
定義 Property LeftMargin() As Double
OddAndEvenPagesHeaderFooterプロパティ
説明 奇数ページと偶数ページに別のヘッダー/フッターを使用するかどうかを設定/取得
(Trueの場合、別のヘッダー/フッターを使用)
定義 Property OddAndEvenPagesHeaderFooter() As Boolean
Orderプロパティ
説明 [ページの方向]を設定/取得

(※)XlOrder列挙体は、以下の通り。
xlDownThenOver(1):左から右
xlOverThenDown(2):上から下

定義 Property Order() As XlOrder
Orientationプロパティ
説明 [印刷の向き]を設定/取得

(※)XlPageOrientation列挙体は、以下の通り。
xlLandscape(2):横モード
xlPortrait(1)     :縦モード

定義 Property Orientation() As XlPageOrientation
Pagesプロパティ(読み取り専用)
説明 Pagesコレクションを取得

(※)PagesコレクションおよびPageオブジェクトは、Workbook内のPageを表すオブジェクト。
(↑各オブジェクトの詳細は次項参照)

定義 Property Pages() As Pages
PaperSizeプロパティ
説明 用紙のサイズを設定/取得

(※)XlPaperSize列挙体の主な定数は、以下の通り。
xlPaperA3(8)  :A3(297mmx420mm)
xlPaperA4(9)  :A4(210mmx297mm)
xlPaperA5(11):A5(148mmx210mm)
xlPaperB4(12):B4(250mmx354mm)
xlPaperB5(13):B5(182mmx257mm)

定義 Property PaperSize() As XlPaperSize
Parentプロパティ(読み取り専用)
説明 指定されたオブジェクトの親オブジェクトを取得
定義 Property Parent() As Object
PrintAreaプロパティ
説明 [印刷範囲]を設定/取得
定義 Property PrintArea() As String
PrintCommentsプロパティ
説明 コメントを印刷する方法を設定/取得

(※)XlPrintLocation列挙体は、以下の通り。
xlPrintInPlace(16)              :コメントを[画面表示イメージ]で印刷
xlPrintNoComments(-4142):コメントを印刷しない
xlPrintSheetEnd(1)             :コメントを[シートの末尾]に印刷

定義 Property PrintComments() As XlPrintLocation
PrintErrorsプロパティ
説明 印刷エラーの取扱い方法を設定/取得

(※)XlPrintErrors列挙体は、以下の通り。
xlPrintErrorsBlank(1)      :空白
xlPrintErrorsDash(2)       :ダッシュとして表示
xlPrintErrorsDisplayed(0):全ての印刷エラーを表示
xlPrintErrorsNA(3)          :使用不可として表示

定義 Property PrintErrors() As XlPrintErrors
PrintGridlinesプロパティ
説明 セルの枠線を印刷するかどうかを設定/取得
(Trueの場合、枠線を印刷)
定義 Property PrintGridlines() As Boolean
PrintHeadingsプロパティ
説明 行番号・列番号を印刷するかどうかを設定/取得
(Trueの場合、行番号・列番号を印刷)
定義 Property PrintHeadings() As Boolean
PrintNotesプロパティ
説明 コメントを印刷するかどうかを設定/取得
(Trueの場合、コメントを[シートの末尾]に印刷)
定義 Property PrintNotes() As Boolean
PrintQualityプロパティ
説明 [印刷品質]を設定/取得
定義 Property PrintQuality(Index As Variant) As Variant
PrintTitleColumnsプロパティ
説明 [タイトル列]を設定/取得
定義 Property PrintTitleColumns() As String
PrintTitleRowsプロパティ
説明 [タイトル行]を設定/取得
定義 Property PrintTitleRows() As String
RightFooterプロパティ
説明 フッター右の文字列を設定/取得
定義 Property RightFooter() As String
RightFooterPictureプロパティ(読み取り専用)
説明 フッター右の画像を表すGraphicオブジェクトを取得
定義 Property RightFooterPicture() As Graphic
RightHeaderプロパティ
説明 ヘッダー右の文字列を設定/取得
定義 Property RightHeader() As String
RightHeaderPictureプロパティ(読み取り専用)
説明 ヘッダー右の画像を表すGraphicオブジェクトを取得
定義 Property RightHeaderPicture() As Graphic
RightMarginプロパティ
説明 右余白の値をポイントで設定/取得
定義 Property RightMargin() As Double
ScaleWithDocHeaderFooterプロパティ
説明 文書に合せてヘッダー/フッターを拡大・縮小するかどうかを設定/取得
(Trueの場合、文書に合せて拡大・縮小)
定義 Property ScaleWithDocHeaderFooter() As Boolean
TopMarginプロパティ
説明 上余白の値をポイントで設定/取得
定義 Property TopMargin() As Double
Zoomプロパティ
説明 拡大率または縮小率(%)を設定/取得
(設定可能な値は、10~400)
定義 Property Zoom() As Variant

■Pagesコレクション、Pageオブジェクト、HeaderFooterオブジェクトの詳細

PagesコレクションおよびPageオブジェクトは、ブック内のページを表すオブジェクトで、PegeSetupオブジェクトのPagesプロパティで取得可能です。

Pageオブジェクトには、ヘッダー(左、中央、右)とフッター(左、中央、右)に対応するプロパティが用意されており、いずれもHeaderFooterオブジェクトを取得可能です。

Pagesコレクション、Pageオブジェクト、HeaderFooterオブジェクトのメソッドおよびプロパティは下表の通りです。

(Pagesコレクションのメソッドおよびプロパティ)

Countプロパティ(読み取り専用)
説明 Pageオブジェクトの数を取得
定義 Property Count As Long
Itemメソッド
説明 Pagesコレクションから指定したPageオブジェクトを取り出す
定義 Function Item(Index) As Page

(Pageオブジェクトのプロパティ)

CenterFooterプロパティ(読み取り専用)
説明 フッター中央を取得
定義 Property CenterFooter As HeaderFooter
CenterHeaderプロパティ(読み取り専用)
説明 ヘッダー中央を取得
定義 Property CenterHeader As HeaderFooter
LeftFooterプロパティ(読み取り専用)
説明 フッター左を取得
定義 Property LeftFooter As HeaderFooter
LeftHeaderプロパティ(読み取り専用)
説明 ヘッダー左を取得
定義 Property LeftHeader As HeaderFooter
RightFooterプロパティ(読み取り専用)
説明 フッター右を取得
定義 Property RightFooter As HeaderFooter
RightHeaderプロパティ(読み取り専用)
説明 ヘッダー右を取得
定義 Property RightHeader As HeaderFooter

(HeaderFooterオブジェクトのプロパティ)

Pictureプロパティ(読み取り専用)
説明 ヘッダー/フッターの画像を表すGraphicオブジェクトを取得
定義 Property Picture As Graphic
Textプロパティ
説明 ヘッダー/フッターのテキストを設定/取得
定義 Property Text As String

■行追加に合せて、印刷範囲を縦方向に延ばす処理

「印刷範囲を設定したワークシートに行を追加し、追加した行の分だけ印刷範囲を縦方向に延ばしたい」と思ったことがあり、意外と苦労した経験があるので、サンプル・プログラムを掲載しておきます。

(処理概要)
予め印刷範囲が設定されたシートに別のシートから行単位でデータをコピーし、追加された行の分だけ印刷範囲を縦方向に拡張する処理ですが、プログラムを簡単にするため、1つのブックの中で1シート目から2シート目にコピーするだけにしてあります。

(サンプル・プログラム)
行番号9で出力先シートの最終行を行カウンタにセットし、行番号10~14の繰返し処理で1シート目から2シート目に行単位でコピーし、行番号15~17で印刷範囲を再設定しています。

PageSetupオブジェクトのPrintAreaプロパティには、印刷範囲として設定されている範囲がA1参照形式の文字列(例えば、「A1:H20」のような値)が返って来ますので、行番号15でその値を指定してRangeオブジェクトを取得(この例であれば、「Range(“A1:H20")」のように指定)し、行番号16でRangeオブジェクトのResizeメソッドでRangeオブジェクトの範囲を変更した後、行番号17で印刷範囲を設定し直しています。
(設定したい印刷範囲がわかっているのであれば、単に「sht2.PageSetup.PrintArea = “A1:H30″」のように設定するだけで大丈夫です)

  1. Dim sht1, sht2 As Object
  2. Dim rng As Range
  3. Dim rcnt As Long
  4. Dim i As Integer
  5. Private Sub Sample1()
  6.     Set sht1 = ActiveSheet
  7.     Set sht2 = Worksheets(2)
  8.     rcnt = sht2.Cells(sht2.Rows.Count, 1).End(xlUp).Row
  9.     For i = 1 To sht1.Cells(sht1.Rows.Count, 1).End(xlUp).Row
  10.         sht1.Rows(i).Copy
  11.         rcnt = rcnt + 1
  12.         sht2.Rows(rcnt).PasteSpecial (xlPasteAll)
  13.     Next i
  14.     Set rng = sht2.Range(sht2.PageSetup.PrintArea)
  15.     Set rng = rng.Resize(RowSize:=rcnt)
  16.     sht2.PageSetup.PrintArea = rng.Address
  17. End Sub

 

国本温子(著),緑川吉行(著),できるシリーズ編集部(著)
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ

大村あつし(著),古川順平(著)
出版社:技術評論社
発売日:2021/1/9
単行本(ソフトカバー):A5判/800ページ

国本温子(著),緑川吉行(著),できるシリーズ編集部(著)
出版社:インプレス
発売日:2022/3/23
単行本(ソフトカバー):A5判/912ページ

大村あつし(著),古川順平(著)
出版社:技術評論社
発売日:2021/1/9
単行本(ソフトカバー):A5判/800ページ

高橋宣成(著)
出版社:技術評論社
発売日:2019/11/25
単行本(ソフトカバー):B5変形判/576ページ

覚え書

Posted by hides