VBAで印刷機能を作成する

2021年6月11日

エクセルシート上のボタンから印刷するサンプルアプリです。
通常エクセルの印刷は印刷範囲を設定してから、「ファイル」、「印刷」メニューを選択して印刷をしますが、
VBAを利用するとワンクリックで印刷することが可能になります。

印刷機能サンプルアプリの説明

印刷ボタンをクリックすると、印刷プレビューが表示されます。
印刷する場合は、エクセルで用意されている 「印刷」 メニューから印刷します。
印刷を中止する場合は「印刷プレビューを閉じる」メニューで印刷を中止します。

印刷設定に必要なプロパティ、メソッド

印刷ヘッダーを設定
印刷ヘッダーを設定するには、WorkSheetオブジェクトのPageSetupオブジェクトのCenterHeader プロパティ を使用します。
ヘッダー・フッターの指定は「& ~ 」という形で指定します。
フォント名は「&」の後ろにダブルクォーテーションで括って指定します。
サンプルソースコードでは「游明朝」というフォント名を「""」で囲って指定しています。
  "&""游明朝
その「""游明朝""」にフォントサイズ「24」を指定する「&24」と、
  "&""游明朝""&24″
印刷させたい文字列「社員一覧表」を「&」でつなげています。
  "&""游明朝""&24″ & “社員一覧表"

印刷範囲の指定
印刷範囲を設定するには、WorkSheetオブジェクトのPageSetupオブジェクトのPrintAreaプロパティを使用します。
サンプルソースコードでは以下のようにセル4行2列の位置からセル20行7列の位置の範囲を指定しています。
PageSetup.PrintArea = wG.Range(Cells(4, 2), Cells(20, 7)).Address

印刷位置の指定
印刷位置を設定するには、WorkSheetオブジェクトのPageSetupオブジェクトのCenterHorizontally/CenterVerticallyプロパティを使用します。
CenterHorizontally 水平方向でページ中央
CenterVertically 垂直方向でページ中央
サンプルソースコードでは以下のように水平方向でページ中央を指定しています。
.PageSetup.CenterHorizontally = True

印刷プレビューの指定
ActiveSheetオブジェクトのPrintPreviewメソッドを使用します。
サンプルソースコードでは以下のように指定しています。
.PrintPreview

サンプルアプリのソースコード  コードの作成手順はこちら 

Sub ボタン1_Click()

 'ワークシートを指定する
  Dim wG As Worksheet
  Set wG = Worksheets("Sheet1")

 '印刷するシートを選択
  Worksheets("Sheet1").Select
    
  With ActiveSheet
      
    '印刷ヘッダーの設定
    .PageSetup.CenterHeader = "&""游明朝""&24" & "社員一覧表"
    
    '印刷範囲の指定
    .PageSetup.PrintArea = wG.Range(Cells(4, 2), Cells(20, 7)).Address
    
    '印刷位置をセンターに指定
    .PageSetup.CenterHorizontally = True
    
    '印刷プレビューを表示
    .PrintPreview
      
  End With
          
End Sub