印刷倍率を自動調整に設定して1ページ内に収めて印刷するVBA

印刷ぴったりVBA

エクセルで作成した文書や表を印刷する時に、印刷範囲が用紙からはみ出ていないか確認繰り返しながらプレビューを見たり、倍率調整するの面倒なので、自動調整印刷ができるようにしたいと思ったことありませんか?

ページ設定内ある「拡大縮小印刷」機能をプロパティ設定ではなく、VBAを使って設定すれば解決しますよ。

目次

印刷倍率機能を操る

意外と知られていないのですが、エクセルの印刷ページ設定を開くと「ページ」が開き、この中に「拡大縮小印刷」という項目があります。

ここに拡大倍率を変更できたり、ページ数に合わせた印刷という項目がありますが、この部分を変更して印刷範囲が用紙に収まるように設定する人は少ないと思います。

正直、ここで何%ってやっても印刷イメージが分からないので使わないで、通常は改ページプレビューで印刷範囲を指定すれば、自動的に印刷倍率が変更されるからです。

FitToPagesを使って印刷倍率自動化する

使用するエクセルVBAは、「FitToPages」で、ここではユーザーフォームに配置したコマンドボタンに、現在表示中のシート(ActiveSheet)を印刷する時に、横向きにA4用紙1枚にピッタリ印刷できるようにします。

拡大縮小印刷VBA

Private Sub CommandButton1_Click()
With ActiveSheet.PageSetup
.PaperSize = xlPaperA4
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
End With
ActiveSheet.PrintOut
End Sub

ちなみに、表示中のシートではなく、指定したシートにする場合はActiveSheetWorkSheets(“シート名”)に変えるだけです。

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のシートのページ設定をする
  3. 用紙サイズはA4に設定
  4. 用紙の向きは横向き
  5. 拡大縮小印刷機能を無効にする
  6. 横向きの1ページ内に印刷倍率を自動調整する
  7. Withステートメント終了
  8. 印刷する
  9. マクロ記録終了

これで、横向きのA4用紙ピッタリに印刷できるようになりますが、5行目の拡大縮小印刷機能(.Zoom = False)を忘れると、拡大縮小印刷が有効になってしまうので、%が優先されて1ページ印刷機能が使えませんので、忘れずに無効にしましょう。

有効に戻す時は、FalseをTureにするだけで、に6行目の横向きを縦向きのままで1ページに収めることもできます。

横向きFitToPagesWide
縦向きFitToPagesTall
目次