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

Excel-VBA 印刷

印刷範囲が用紙からはみ出ていないか確認繰り返しながらプレビューを見たり、倍率調整するの面倒じゃないですか?

1ページ内に収める為に、用紙の向きだけ指定して印刷倍率は自動調整にして楽しませんか?

スポンサーリンク

印刷倍率機能を操る

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

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

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

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

ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書き、表示中のシートのページ設定(ActiveSheet)で記載しています。

シートを指定する場合はActiveSheetWorkSheets(“シート名”)に変えるだけです。

横向きA4用紙1枚にピッタリ印刷

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

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

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

有効に戻す時は、FalseをTureにするだけです。

ちなみに6行目の横向きを縦向きのままで1ページに収めることもできます。

横向きFitToPagesWide
縦向きFitToPagesTall
印刷関連VBA
印刷
スポンサーリンク
参考になりましたらシェア宜しくお願い致します
Excel VBA