【ExcelVBA入門】高度な印刷設定をする方法とは?高速化対応も解説!

皆さんは、VBAで印刷する方法を知っていますか?

Excelのデータを印刷するケースはよくあるので、使い方を覚えておくと便利です!

そこで今回は、

・VBAで印刷する方法

といった基礎的なことから、

・VBAで高度な印刷設定をする方法

・印刷を高速化するテクニック

といった応用的な方法まで、徹底的に解説します!

基礎的な印刷・プレビュー方法

はじめに、VBAで印刷・プレビューする方法について簡単に解説します。

印刷・プレビューする方法は次のとおりです。

使い方:

‘シート全体を印刷する場合
Worksheets(シート名).PrintOut       '印刷
Worksheets(シート名).PrintPreview   '印刷プレビュー

‘指定した範囲を印刷する場合
Range(印刷範囲).PrintOut       '印刷
Range(印刷範囲).PrintPreview   '印刷プレビュー

シート全体を指定する場合は「Worksheets(シート名)」を指定し、範囲指定する場合は「Range(セル範囲)」のようにセル範囲を指定します。

このように、簡単に印刷・プレビューをすることができます。

VBAの基礎的な印刷方法については以下で詳しく解説しているので、気になる方は見てみてくださいね!


【VBA入門】印刷範囲の設定方法・セル選択で直接指定する方法とは
更新日 : 2018年9月11日

詳細な印刷設定方法

次に、詳細な印刷設定方法について解説します。

余白の設定方法

まずは、「余白の設定方法」について解説します。

印刷の余白は、Marginプロパティを使って設定します。

上下左右・ヘッダー・フッダーでそれぞれ以下のように設定することができます。

No設定値意味
1LeftMargin左余白の設定
2RightMargin右余白の設定
3TopMargin上余白の設定
4BottomMargin下余白の設定
5HeaderMarginヘッダー余白の設定
6FooterMarginフッター余白の設定

サンプルコード:

Sub Test()

    '印刷設定
    With Worksheets("請求書").PageSetup
        .LeftMargin = Application.CentimetersToPoints(1)
        .RightMargin = Application.CentimetersToPoints(1)
        .TopMargin = Application.CentimetersToPoints(1)
        .BottomMargin = Application.CentimetersToPoints(1)
        .HeaderMargin = Application.CentimetersToPoints(0.5)
        .FooterMargin = Application.CentimetersToPoints(0.5)
    End With
    
    '印刷プレビュー
    Worksheets("請求書").PrintPreview
    
End Sub

上下左右にそれぞれ1cmヘッダー・フッダーにそれぞれ0.5cm余白を設定しています。

このように、簡単に余白を設定することができます。

CentimetersToPoints」はcmで数値を指定するための関数なので、合わせて覚えておくと便利です!

用紙の向きの設定方法

次に、「用紙の向きの設定方法」について解説します。

用紙の向きは、Orientationプロパティを使って設定します。

指定方法は次のとおり。


・縦向き:xlPortrait
・横向き:xlLandscape

これだけだとわかりづらいので、簡単なサンプルを用意しました。

サンプルコード:

Sub Test()

    '印刷設定
    With Worksheets("請求書").PageSetup
        .Orientation = xlPortrait
    End With
    
    '印刷プレビュー
    Worksheets("請求書").PrintPreview
    
End Sub

縦向きで印刷されるよう設定しているサンプルです。

このように、簡単に用紙の向きを指定することができます。

ヘッダー・フッダーの設定方法

次に、「ヘッダー・フッダーの設定方法」について解説します。

ヘッダー・フッダーは、左・中央・右の表示位置ごとに、それぞれ次のように指定して値を設定します。

Noプロパティ意味
1LeftHeaderヘッダー左
2CenterHeaderヘッダー中央
3RightHeaderヘッダー右
4LeftFooterフッダー左
5CenterFooterフッダー中央
6RightFooterフッダー右

ヘッダー・フッダーはシート名、ページ番号、日付などをよく使うので、合わせて以下オプションも覚えておくと便利です!

No設定値変換された値
1&D日付
2&Pページ番号
3&N総ページ数
4&Aシート名

これだけだとわかりづらいので、簡単なサンプルを用意しました。

サンプルコード:

Sub Test4()
    
    '印刷設定
    With Worksheets("請求書").PageSetup
        .Orientation = xlPortrait
        .CenterHeader = "&A"
        .RightHeader = "&D"
        .CenterFooter = "&P" & "/" & "&N"
    End With
    
    '印刷プレビュー
    Worksheets("請求書").PrintPreview
    
End Sub

ヘッダー中央にシート名、ヘッダー右に日付、フッダー中央に(ページ/総ページ数)を表示するためのサンプルです。

このように、簡単にヘッダー・フッダーを設定することができます。

合わせて覚えると便利な印刷処理高速化方法

ここまで詳細な印刷設定方法について解説してきましたが、Excelとプリンターを接続したまま印刷設定をすると、1つずつ設定するため時間がかかってしまします。

印刷設定直前にプリンターとの接続を切り、全ての設定の準備ができた後にプリンターを再接続することで、無駄な待ち時間なく高速で印刷設定をすることができます。

ApplicationオブジェクトPrintCommunicationプロパティで、以下のようにプリンターの接続を設定することができます。


・True :接続
・False:接続を切る

こちらもサンプルコードを用意しました。

サンプルコード:

Sub Test5()
    
    'プリンタ接続を一度切る
    Application.PrintCommunication = False
    
    '印刷設定
    With Worksheets("請求書").PageSetup
        .Orientation = xlPortrait
        .CenterHeader = "&A"
        .RightHeader = "&D"
        .CenterFooter = "&P" & "/" & "&N"
        .LeftMargin = Application.CentimetersToPoints(1)
        .RightMargin = Application.CentimetersToPoints(1)
        .TopMargin = Application.CentimetersToPoints(1)
        .BottomMargin = Application.CentimetersToPoints(1)
        .HeaderMargin = Application.CentimetersToPoints(0.5)
        .FooterMargin = Application.CentimetersToPoints(0.5)
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    
    'プリンタを再接続
    Application.PrintCommunication = True
    
    '印刷プレビュー
    Worksheets("請求書").PrintPreview
    
End Sub

以下の流れで処理を書いているため、印刷設定が多くても無駄な時間を待たずに処理を動かすことができます。


設定前にプリンタとExcelの接続を止める

VBAで設定用のコードを実行

最後にプリンタとExcelを接続

印刷設定とあわせて覚えておくと便利です!

まとめ

今回は、VBAで印刷設定をする方法について解説しました。

Excelを使っていると、データを印刷したいケースはよくあります。

使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説