ExcelでVBAを使用してシートの一部を印刷する場合、PrintAreaの設定と改ページプレビューの整合性が重要です。特にボタンから印刷するマクロで意図しない列まで印刷されてしまうことがあります。本記事ではU列まで正しく印刷する方法を解説します。
PrintArea設定の基本
ActiveSheet.PageSetup.PrintAreaに印刷範囲を設定することで、印刷対象を限定できます。例えば、ActiveSheet.PageSetup.PrintArea = "$A:$U"とすることでA列からU列までが対象になります。
ただし、この設定だけでは改ページや印刷倍率の影響で想定外の列まで印刷される場合があります。
Application.PrintCommunicationの影響
Application.PrintCommunication = Falseを使用すると、PageSetupの設定変更が一時的に画面反映されなくなります。設定後にTrueに戻す必要がありますが、この間に他のPageSetupプロパティが正しく反映されていないことが原因で印刷範囲が拡張されることがあります。
そのため、PrintAreaの設定前後にZoomやOrientationなどのプロパティも含めて一度明示的に設定するのが望ましいです。
改ページプレビューとの整合性
改ページプレビューでは正しくU列まで設定されていても、ボタン経由のマクロ印刷で範囲が広がることがあります。これは印刷倍率やFitToPages設定が影響している場合があります。
対策として、PageSetup.Zoomを使用せず、FitToPagesWideやFitToPagesTallを指定してページ幅に合わせる方法があります。例えば、.FitToPagesWide = 1とすることで指定列までを1ページ幅に収められます。
印刷範囲を確実に制御するVBA例
以下のようにPageSetupをまとめて設定すると、U列までの印刷が安定します。
With ActiveSheet.PageSetup
.PrintArea = "$A:$U"
.PrintComments = xlPrintNoComments
.FitToPagesWide = 1
.FitToPagesTall = False
End With
PrintCommunicationのON/OFFも含めて順序よく設定すると、改ページプレビュー通りの範囲で印刷可能です。
まとめ
VBAで指定列まで正確に印刷するには、PrintAreaだけでなく、PrintCommunicationやFitToPagesの設定を適切に組み合わせることが重要です。これにより、ボタンからの印刷でも意図した列まで正しく印刷され、W列まで余計に印刷される問題を回避できます。


コメント