(Excel) ページ設定ダイアログと対応するVBAコード
はじめに
VBAでのページ設定の高速化
以前から、VBAでのページ設定の速度が遅いことが知られている。これを解消するため、Office2010以降では高速化させるコードが組み込まれた。
'**PageSetup高速化開始 Application.PrintCommunication = False ここにページ設定処理を入れる '**PageSetup高速化終了 Application.PrintCommunication = True
PageSetupはシート(Sheet)に対して行う
実際のワークシート(ブック)の操作を思い浮かべて貰うと、ページ設定が各シートに対してそれぞれ行うものだと理解できるだろう。
例: '**1番左のワークシートのページ設定 Worksheets(1).PageSetup.~ '**Sheet3という名前のワークシートのページ設定 Worksheets("Sheet3").PageSetup.~ '**現在アクティブなワークシートのページ設定 ActiveSheet.PageSetup.~ '**ブックに含まれる全てのワークシートのページ設定 Dim mySheet As Worksheet For Each mySheet In Worksheets mySheet.PageSetup.~~ Next mySheet
「ページ」タブ
印刷の向き
PageSetup.Orientation : 印刷の向きを設定する ' **アクティブシートの印刷の向きを「横」に設定する ActiveSheet.PageSetup.Orientation = xlLandscape
項目 | コード | 値 |
---|---|---|
縦 | xlPortrait | 1 |
横 | xlLandscape | 2 |
拡大縮小印刷
拡大/縮小
PageSetup.Zoom : シートの拡大縮小率を設定する ' **アクティブシートの拡大縮小率を「46%」に設定する ActiveSheet.PageSetup.Zoom = 46
項目 | コード | 値 |
---|---|---|
拡大縮小率 | - | 10~400 |
「次のページ数に合わせて印刷」の場合 | False | - |
次のページ数に合わせて印刷
PageSetup.FitToPageTall : シートを縦何ページ分で収めるかを設定する PageSetup.FitToPageWide : シートを横何ページ分で収めるかを設定する ' **アクティブシートを縦1ページ、横1ページに収まるように設定する With ActiveSheet.PageSetup .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 End With
項目 | 値 | 備考 |
---|---|---|
.Zoom | False | 必須 |
.FitToPageTall | 1~ | 縦 |
.FitToPageWide | 1~ | 横 |
用紙サイズ
PageSetup.PaperSize : 用紙サイズを設定する ' **アクティブシートの用紙サイズをA3に設定する ActiveSheet.PageSetup.PaperSize = xlPaperA3
日本で使う主な値
値 | サイズ | 幅x高さ |
---|---|---|
xlPaperA3 | A3 | 297mm x 420mm |
xlPaperA4 | A4 | 210mm x 297mm |
xlPaperA5 | A5 | 148mm x 210mm |
xlPaperB4 | B4 | 250mm x 354mm |
xlPaperB5 | B5 | 177mm x 250mm |
印刷品質
PageSetup.PrintQuality : 印刷品質(dpi)を設定する ' **アクティブシートの印刷品質を600dpiに設定する PageSetup.PrintQuality = 600
※印刷するプリンターによって異なるが、300dpi, 600dpi, 1200dpiなどが一般的。値が大きいほど綺麗に印刷されるが印刷データが大きくなる。(ファイルサイズではない)
先頭ページ番号
PageSetup.FirstPageNumber : 先頭ページ番号を設定する ' **アクティブシートの先頭ページ番号を100に設定する PageSetup.FirstPageNumber = 100
値 | 備考 |
---|---|
xlAutomatic | 自動的に先頭ページの番号が選択される |
1~ | 1~ |
「余白」タブ
余白およびヘッダー/フッターの高さ
PageSetup.LeftMargin : 左余白を設定する PageSetup.RightMargin : 右余白を設定する PageSetup.TopMargin : 上余白を設定する PageSetup.BottomMargin : 下余白を設定する PageSetup.HeaderMargin : ヘッダーの高さを設定する PageSetup.FooterMargin : フッターの高さを設定する ' **アクティブシートの余白を各2.0cm, ' ヘッダー/フッターの高さを1.5cmに設定する With ActiveSheet.PageSetup .LeftMargin = Application.CentimetersToPoints(2.0) .RightMargin = Application.CentimetersToPoints(2.0) .TopMargin = Application.CentimetersToPoints(2.0) .BottomMargin = Application.CentimetersToPoints(2.0) .HeaderMargin = Application.CentimetersToPoints(1.5) .FooterMargin = Application.CentimetersToPoints(1.5) End With
単位 | コードと値 |
---|---|
センチメートル単位 ※ミリ単位ではない点に注意 |
Application.CentimetersToPoints( ) |
インチ単位 | Application.InchesToPoints( ) |
ページ中央
PageSetup.CenterHorizontally : 水平方向のページ中央に配置する PageSetup.CenterVertically : 垂直方向のページ中央に配置する ' **アクティブシートを水平方向でページ中央に配置し、 ' 垂直方向ではページ中央に配置しない With ActiveSheet.PageSetup .CenterHorizontally = True .CenterVertically = False End With
項目 | コード |
---|---|
ページ中央に配置する | True |
ページ中央に配置しない | False |
「ヘッダー/フッター」タブ
「ヘッダーの編集」「フッターの編集」
With ActiveSheet.PageSetup '**全ページ用ヘッダー/フッターの指定 .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "&P ページ" .RightFooter = "" End With ※但し、OddAndEvenPagesHeaderFooter = Trueの場合は奇数ページ用となる
その他のオプション
奇数/偶数ページ別指定
With ActiveSheet.PageSetup '**奇数/偶数ページ別指定 .OddAndEvenPagesHeaderFooter = True '**偶数ページ用ヘッダー/フッターの指定 .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" End With
項目 | コード |
---|---|
奇数/偶数ページを別指定する | True |
奇数/偶数ページを別指定しない | False |
先頭ページのみ別指定
With ActiveSheet.PageSetup '**先頭ページのみ別指定 .DifferentFirstPageHeaderFooter = True '**先頭ページ用ヘッダー/フッターの指定 .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With
項目 | コード |
---|---|
先頭ページのみ別指定する | True |
先頭ページのみ別指定しない | False |
ドキュメントに合わせて拡大/縮小
PageSetup.ScaleWithDocHeaderFooter:ドキュメントに合わせて拡大/縮小する
項目 | コード |
---|---|
ドキュメントに合わせて拡大/縮小する | True |
ドキュメントに合わせて拡大/縮小しない | False |
ページ余白に合わせて配置
PageSetup.AlignMarginsHeaderFooter:ページ余白に合わせて配置する
項目 | コード |
---|---|
ページ余白に合わせて配置する | True |
ページ余白に合わせて配置しない | False |
「シート」タブ
印刷範囲
PageSetup.PrintArea : 印刷範囲を設定する ' **アクティブシートの印刷範囲を$A$1:$AB$32に設定する ActiveSheet.PageSetup.PrintArea = "$A$1:$AB$32"
印刷タイトル
PageSetup.PrintTitleRows : PageSetup.PrintTitleColumns :
印刷
枠線
PageSetup.PrintGridlines : 枠線を印刷するか設定する
項目 | 値 |
---|---|
枠線を印刷する | True |
枠線を印刷しない | False |
白黒印刷
PageSetup.BlackAndWhite : 白黒印刷するか設定する
項目 | 値 |
---|---|
白黒印刷する | True |
白黒印刷しない | False |
簡易印刷
PageSetup.Draft : 簡易印刷するか設定する
項目 | 値 |
---|---|
簡易印刷する | True |
簡易印刷しない | False |
行列番号
PageSetup.PrintHeadings : 行と列の番号を印刷するか設定する
項目 | 値 |
---|---|
行と列の番号を印刷する | True |
行と列の番号を印刷しない | False |
コメント
PageSetup.PrintComments : コメントを印刷するか設定する PageSetup.PrintNotes : コメントを印刷するか設定する
項目 | コード | 値 |
---|---|---|
表示通りにコメントを印刷する | PageSetup.PrintComments | xlPrintInPlace |
末尾にまとめてコメントを印刷する | PageSetup.PrintComments | xlPrintSheetEnd |
コメントを印刷しない | PageSetup.PrintNotes | False |
セルのエラー
PageSetup.PrintErrors : エラーを印刷するか設定する
項目 | 値 |
---|---|
印刷エラーは空白 | xlPrintErrorsBlank |
印刷エラーはダッシュとして表示 | xlPrintErrorsDash |
すべての印刷エラーが表示 | xlPrintErrorsDisplayed |
印刷エラーは使用不可として表示 | xlPrintErrorsNA |
ページの方向
PageSetup.Order : 印刷するページの方向を設定する
項目 | コード | 値 |
---|---|---|
左から右 | xlDownThenOver | 1 |
上から下 | xlOverThenDown | 2 |