教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 印刷】印刷範囲を1ページに収めて印刷する方法について教えて!

f:id:m_kbou:20210513191200p:plain

Excelシートを印刷しようとすると一部分だけが2枚目にはみ出し、本来であれば1ページで印刷する予定が2ページで印刷されるケースがあります。このケースを回避すべく、VBAで1ページに収めて印刷する方法について紹介します。

 

 

構文

記述方法は以下の通りとなります。

Sheets("[シート名]").PageSetup.FitToPagesTall = 1
Sheets("[シート名]").PageSetup.FitToPagesWide = 1

[説明]:

縦幅を1ページに収めるには
 「Sheets("[シート名]").PageSetup.FitToPagesTall = 1」
と記述します。
また、横幅を1ページに収めるには
 「Sheets("[シート名]").PageSetup.FitToPagesWide = 1」
と記述します。
[シート名]には1ページに収めて印刷するシート名を記述し、「”」(ダブルクォーテーション)で囲みます。内容を纏めると、「[シート名]シートを印刷時には1ページに収めて下さい。」との意味になります。

[記述例]:

Sub 印刷範囲を1ページに収める()
  Sheets("Sheet1").PageSetup.Zoom = False
  Sheets("Sheet1").PageSetup.FitToPagesTall = 1
  Sheets("Sheet1").PageSetup.FitToPagesWide = 1
  Sheets("Sheet1").PrintPreview
End Sub

 

使い方

使い方について具体的に説明します。

印刷範囲を1ページに収める

印刷範囲を1ページに収める方法について説明します。

[プログラミング例]:

Sub 印刷範囲を1ページに収める()
  Sheets("Sheet1").PageSetup.Zoom = False
  Sheets("Sheet1").PageSetup.FitToPagesTall = 1
  Sheets("Sheet1").PageSetup.FitToPagesWide = 1
  Sheets("Sheet1").PrintPreview
End Sub

内容は、「Sheet1シートの倍率を通常サイズに戻し、印刷時に縦幅及び横幅を1ページに収まる様に設定します。最後に印刷プレビューで表示して下さい。」との意味になります。

f:id:m_kbou:20210513191344p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

(事前確認)

Sheet1シートのA2セル~L44セルにデータが入力されており、印刷時に1ページに収まり切れない状態となっています。(※ページ区切り線を超えたデータが入力されています。)

f:id:m_kbou:20210513191417p:plain

また、印刷プレビューで確認すると全体で4ページになっている事がわかります。

f:id:m_kbou:20210513191558p:plain

①<1ページに収める>ボタンをクリックします。<1ページに収める>ボタンには上記のプログラミング例のプログラムが登録されています。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210513191747p:plain

②結果は以下の様になり、印刷プレビューで1ページに収まっている事が確認できます。

f:id:m_kbou:20210513191846p:plain

印刷範囲を1ページに収めて印刷する方法についての説明は以上です。

 

印刷範囲を1ページに収めた状態から通常状態に戻す

印刷範囲を1ページに収めた状態から通常状態に戻す方法について説明します。

[プログラミング例]:

Sub 元に戻す()
  Sheets("Sheet1").PageSetup.Zoom = False
  Sheets("Sheet1").PageSetup.FitToPagesTall = False
  Sheets("Sheet1").PageSetup.FitToPagesWide = False
  Sheets("Sheet1").PrintPreview
End Sub

内容は、「Sheet1シートの倍率を通常サイズに戻し、印刷時に縦幅及び横幅を通常状態に戻します。最後に印刷プレビューで表示して下さい。」との意味になります。(※上記「印刷範囲を1ページに収める」の説明で1ページで収まる様に縦幅や横幅を「1」で設定しましたが、この設定を「1」→「False」に置き換える事で1ページに収まる設定を解放します。(通常状態に戻します。))

f:id:m_kbou:20210513200945p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

(事前確認)

印刷プレビューで確認すると全体で1ページに収まっている事が確認できます。

f:id:m_kbou:20210513191543p:plain

①<元に戻す>ボタンをクリックします。<元に戻す>ボタンには上記のプログラミング例のプログラムが登録されています。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210513202646p:plain

②結果は以下の様になり、印刷プレビューで4ページになっている事が確認できます。

f:id:m_kbou:20210513191558p:plain

印刷範囲を1ページに収めた状態から通常状態に戻す方法についての説明は以上です。

 

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

 

おわりに

今回は印刷範囲を1ページに収める方法について説明しました。自動印刷をする様なプログラミングをする様な場合には有効活用できます。是非参考にして下さい。