■ ワークシートを印刷しよう!1
ペーパレス化が叫ばれる昨今ですが、いまだに情報を紙として印刷したいという企業ニーズは後を絶ちません。Excelのワークシートは、きわめて微細なレイアウトを行うことができ、うまく活用することで、ほとんどどんな帳票のレイアウトでも実現することができます。
※エクセルは最高の帳票作成ツール
Excel VBAを利用することで、ワークシートを自由自在に印刷することが可能です。[印刷]ダイアログボックスで設定する内容、印刷範囲や部数、印刷対象、使用するプリンタなど、VBAから自由に設定を変更して思い通りの印刷することができます。
■プレビュー画面を表示する
・印刷プレビューを表示する
印刷プレビューを表示するには、PrintPreviewメソッドを使用します。PrintPreviewメソッドを使用した場合、そのあとに続くプロシージャは、印刷プレビュー画面の[印刷]ボタン、[閉じる]ボタンをクリックするまで実行されません。
[書式]
オブジェクト.PrintPreview(変更の許可)
オブジェクトには、Windowオブジェクト、Workbookオブジェクト、Worksheetオブジェクト、Chartオブジェクトを指定します。またSheetsコレクション、Worksheetsコレクション、Chartsコレクション、Rangeコレクションを指定することもできます。オブジェクトは必ず指定します。
変更の許可には、TrueまたはFalseを指定します。Falseを指定すると、[設定]ボタンと[余白]ボタンが無効になります。省略すると、Trueが指定されます。
※何も入力されていないワークシートを対象に、PrintPreviewメソッドを実行すると、印刷範囲のみ設定され、印刷プレビュー画面は表示されません。
例:
ActiveSheet.PrintPreview(False)
この例では、アクティブなシートの印刷プレビュー画面を、[設定]ボタン、[余白]ボタンを無効にして開きます。 |
■印刷の設定をする
・PageSetupオブジェクトを取得する
印刷の設定をするには、PageSetupオブジェクトを利用します。PageSetupオブジェクトで設定できる印刷設定は、[ページ設定]ダイアログボックスの設定内容と同じです。PageSetupオブジェクトを取得する書式は次の通りです。
[書式]
オブジェクト.PageSetup
オブジェクトには、WorksheetオブジェクトまたはChartオブジェクトを指定します。
・印刷倍率を設定する
印刷倍率を設定するには、Zoomプロパティを使用します。値の取得・設定が可能です。新しいブックを開いたときは、印刷倍率は100%に設定されています。
[書式]
オブジェクト.Zoom
オブジェクト.Zoom = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、印刷する倍率を10〜400の範囲で、%単位の数値を指定します。この範囲を超える値を設定するとエラーが発生します。またFalseを指定した場合、FitToPagesTallプロパティまたはFitToPagesWideプロパティの、どちらかの設定における印刷倍率に設定されます。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.Zoom = 50
.PrintPreview
End With
With Worksheets("Sheet2")
.PageSetup.Zoom = 200
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートを50%の印刷倍率で印刷プレビュー表示した後、Sheet2ワークシートを200%の印刷倍率で印刷プレビュー表示します。 |
・印刷範囲を指定ページに収める
印刷範囲を指定ページに収めるには、FitToPagesTallプロパティまたはFitToPagesWideプロパティのいずれかを使用します。FitToPagesTallプロパティは、印刷内容を縦何ページで収めるかを、FitToPagesWideプロパティは、印刷内容を横何ページで収めるかを、それぞれ設定します。
[書式]
オブジェクト.FitToPagesTall
オブジェクト.FitToPagesTall = 設定値
オブジェクト.FitToPagesWide
オブジェクト.FitToPagesWide = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、印刷内容を収めたいページ数を指定します。Falseを指定すると、印刷範囲を指定ページに収める設定を解除します。
※FitToPagesTallプロパティまたはFitToPagesWideプロパティが有効になるためには、ZoomプロパティがFalse(無効)に設定されている必要があります。また印刷倍率が10%〜400%の範囲を超える場合、設定可能な印刷倍率の範囲内で印刷されます。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.Zoom = False
.PageSetup.FitToPagesTall = 10
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートを縦10ページに収まるように印刷倍率を設定し、印刷プレビュー表示します。 |
・印刷の向きを設定する
印刷の向きを設定するには、Orientationプロパティを指定します。Orientationプロパティを設定することで、印刷の方向を用紙の縦向き、横向きに設定することができます。
[書式]
オブジェクト.Orientation
オブジェクト.Orientation = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、印刷の向きをXlPageOrientationクラスの定数で指定します。XlPageOrientationクラスの定数は次の通りです。
定数 |
内容 |
xlPortrait |
用紙を縦向きに設定します(印刷の向きを"縦"の設定) |
xlLandscape |
用紙を横向きに設定します(印刷の向きを"横"の設定) |
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.Orientation = xlLandscape
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートを横向きの印刷方向(用紙が横向き)で印刷プレビュー表示します。 |
・用紙のサイズを設定する
用紙のサイズを設定するには、PaperSizeプロパティを使用します。
[書式]
オブジェクト.PaperSize
オブジェクト.PaperSize = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、用紙のサイズをXlPaperSizeクラスの定数で指定します。XlPaperSizeクラスの定数の主なものは次の通りです。
定数 |
内容 |
xlPaperA3 |
A3 (297 mm x 420 mm) |
xlPaperA4 |
A4 (210 mm x 297 mm) |
xlPaperA5 |
A5 (148 mm x 210 mm) |
xlPaperB4 |
B4 (250 mm x 354 mm) |
xlPaperB5 |
B5 (182 mm x 257 mm) |
xlPaperEnvelope9 |
封筒 9 号 (3 7/8 x 8 7/8 インチ) |
xlPaperEnvelope10 |
封筒 10 号 (4 1/8 x 9 1/2 インチ) |
xlPaperEnvelope11 |
封筒 11 号 (4 1/2 x 10 3/8 インチ) |
xlPaperEnvelope12 |
封筒 12 号 (4 1/2 x 11 インチ) |
xlPaperEnvelope14 |
封筒 14 号 (5 x 11 1/2 インチ) |
xlPaperEnvelopeB4 |
封筒 B4 (250 mm x 353 mm) |
xlPaperEnvelopeB5 |
封筒 B5 (176 mm x 250 mm) |
xlPaperEnvelopeB6 |
封筒 B6 (176 mm x 125 mm) |
xlPaperEnvelopeC3 |
封筒 C3 (324 mm x 458 mm) |
xlPaperEnvelopeC4 |
封筒 C4 (229 mm x 324 mm) |
xlPaperEnvelopeC5 |
封筒 C5 (162 mm x 229 mm) |
xlPaperEnvelopeC6 |
封筒 C6 (114 mm x 162 mm) |
xlPaperEnvelopeDL |
封筒 DL (110 mm x 220 mm) |
xlPaperUser |
ユーザー設定 |
※プリンタのサポートしていない用紙サイズを設定するとエラーが発生するので注意してください。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.PaperSize = xlPaperB5
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートを用紙サイズB5に設定して、印刷プレビュー表示します。 |
・印刷範囲を設定する
印刷範囲を設定するには、PrintAreaプロパティを使用します。設定した印刷範囲は、[ファイル]メニュー[印刷範囲]>[印刷範囲のクリア]をクリックする、または設定したセル範囲を削除するとクリアされます。
[書式]
オブジェクト.PrintArea
オブジェクト.PrintArea = 設定値
オブジェクトには、PageSetupオブジェクトを指定します。
設定値には、印刷範囲に設定したいセル範囲をA1形式の文字列で指定します。Falseまたは""(長さ0の文字列)を指定すると、印刷範囲を解除します。
例:
Sub Test()
With Worksheets("Sheet1")
.PageSetup.PrintArea = "A1:E5"
.PrintPreview
End With
End Sub
この例では、Sheet1ワークシートのA1〜E5のセル範囲を、印刷プレビュー表示します。 |
※改ページプレビュー画面を表示させたい場合、WindowオブジェクトのViewプロパティを利用します。例えば、
ActiveWindow.View = xlPageBreakPreview
この場合、アクティブなウィンドウを改ページプレビュー画面で表示します。また、
ActiveWindow.View = xlNormalView
この場合、アクティブなウィンドウを標準画面で表示します。
次回も、印刷の設定を行うコードの解説を続けます。
|