Sample Macro  印刷 [基本型] Previous Next

1) 印刷 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 選択したシートを印刷する()
    部数 = 1                                    '印刷部数を指定する ※1
    Sheets("SSS").PrintOut Copies:=部数         '指定部数を印刷する ※2
End Sub
'---------------------------------------------------------------------------------
Sub アクティブシートを印刷する()
    ActiveSheets.PrintOut                       '印刷する(1部)
End Sub
'---------------------------------------------------------------------------------
Sub 選択した部分を印刷する()
    部数 = 1                                    '印刷部数を指定する ※1
    Range("A1:B4").Select                       '範囲を選択する ※3
    Selection.PrintOut Copies:=部数             '指定部数を印刷する
End Sub
'---------------------------------------------------------------------------------
Sub 選択した部分を印刷する_R1C1_その1()
    部数 = 1                                    '印刷部数を指定する ※1
    Range(Cells(1, 1), Cells(4, 2)).Select      '範囲を選択する ※3
    Selection.PrintOut Copies:=部数             '指定部数を印刷する
End Sub
'---------------------------------------------------------------------------------
Sub 選択した部分を印刷する_R1C1_その2()
    Activesheet.Range(Cells(1, 1), Cells(4, 2)).PrintOut '印刷する
End Sub
'---------------------------------------------------------------------------------
Sub ブック全体を印刷する()
    部数 = 1                                    '印刷部数を指定する ※1
    ActiveWorkbook.PrintOut Copies:=部数        '指定部数を印刷する
End Sub
'---------------------------------------------------------------------------------
Sub ブック全体を部単位で印刷する()
    部数 = 2                                    '印刷部数を指定する ※1
    ActiveWorkbook.PrintOut Copies:=部数, Collate:=True '指定部数を部単位で印刷する ※4
End Sub
'---------------------------------------------------------------------------------
Sub ブック内のすべてのワークシートを印刷する()
    ActiveWorkbook.Worksheet.PrintOut           '印刷する(1部)
End Sub
'---------------------------------------------------------------------------------
Sub ブック内のすべてのグラフシートを印刷する()
    ActiveWorkbook.Charts.PrintOut              '印刷する(1部)
End Sub
'=================================================================================
Sub 印刷ダイアログボックスを表示する()
    Application.Dialogs(xlDialogPrint).Show
End Sub
'---------------------------------------------------------------------------------
Sub 印刷ダイアログボックスの初期値を設定して表示する_()
    Application.Dialogs(xlDialogPrint).Show arg4:=3 '印刷部数を指定 ※5
End Sub
'=================================================================================
<コメント>
※1 1、2には印刷部(枚)数を記入
※2 SSSにはシート名を記入
※3 "A1:B4"には印刷したいセル範囲を記入
※4 部数を2以上にして部単位(Collate:=True)で印刷すると、丁合い(ページ揃え)される
※5 arg1:印刷範囲、arg2:開始ページ、arg3:終了、arg4:部数、arg5:簡易印刷、arg6:印刷プレビュー、
   arg7:メモ印刷、arg8:カラー印刷、arg9:紙送り、arg10:印刷品質、arg11:縦方向の解像度、
   arg12:印刷対象、arg13:プリンター名、arg14:ファイルへ出力、arg15:部単位で印刷


2) 印刷プレビュー このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 印刷プレビューする()
    Sheets("SSS").PrintPreview                  'ブレビューする ※1、2
End Sub
'---------------------------------------------------------------------------------
Sub 指定ページを印刷プレビューする()
    開始ページ = 2                              '※3
    終了ページ = 3                              '※3
    ActiveSheet.PrintOut From:=開始ページ, To:=終了ページ, Preview:=True
End Sub
'=================================================================================
<コメント>
※1 SSSにはシート名を記入
※2 Sheets("SSS") は ActiveSheet に代えれる
※3 2 (3) にはプレビューを開始 (終了) するページの番号を記入


3) 改ページ このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 改ページプレビューを表示する()
    ActiveWindow.View = xlPageBreakPreview      '※1
End Sub
'---------------------------------------------------------------------------------
Sub 改ページプレビューを閉じる()
    ActiveWindow.View = xlNormalView            '※1
End Sub
'=================================================================================
Sub 改ページ数と改ページ位置を取得する()
    改ページ数 = ActiveSheet.HPageBreaks.Count
    For I = 1 To 改ページ数
        改ページ位置行 = ActiveSheet.HPageBreaks(I).Location.Row
        改ページ位置列 = ActiveSheet.HPageBreaks(I).Location.Column
        改ページ位置行列番号 = ActiveSheet.HPageBreaks(I).Location.Address
    Next
End Sub
'=================================================================================
Sub 水平改ページ位置を変更する()
    ActiveWindow.View = xlPageBreakPreview      '改ページプレビュー
    Set ActiveSheet.HPageBreaks(1).Location = Range("A38") '水平改ページ位置1を変更 ※2
    Set ActiveSheet.HPageBreaks(2).Location = Range("A74") '水平改ページ位置2を変更 ※2
End Sub
'---------------------------------------------------------------------------------
Sub 水平改ページ位置を追加する()
    ActiveSheet.HPageBreaks.Add Before:=ActiveCell
End Sub
'---------------------------------------------------------------------------------
Sub 水平改ページ位置を削除する()
    ActiveSheet.HPageBreaks(1).Delete
End Sub
'=================================================================================
Sub 垂直改ページ位置を変更する()
    ActiveWindow.View = xlPageBreakPreview      '改ページプレビュー
    Set ActiveSheet.VPageBreaks(1).Location = Range("E1") '垂直改ページ位置1を変更 ※2
    Set ActiveSheet.VPageBreaks(2).Location = Range("J1") '垂直改ページ位置2を変更 ※2
End Sub
'---------------------------------------------------------------------------------
Sub 垂直改ページ位置を追加する()
    ActiveSheet.VPageBreaks.Add Before:=ActiveCell
End Sub
'---------------------------------------------------------------------------------
Sub 垂直改ページ位置を削除する()
    ActiveSheet.VPageBreaks(1).Delete
End Sub
'=================================================================================
Sub すべての改ページをリセットする()
    ActiveSheet.ResetAllPageBreaks
End Sub
'=================================================================================
<コメント>
※1 xlPageBreakPreview : 改ページプレビュー、xlNormalView : 標準ビュー
※2 A38、A74、E1、J1には変更位置を記入


4) ページ区切り・ページ境界線 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub ページ区切りを表示する()
    ActiveSheet.DisplayPageBreaks = True        '※1、2
End Sub
'=================================================================================
Sub ページ区切りの表示状態を反転する()
    ActiveSheet.DisplayPageBreaks = Not _
    ActiveSheet.DisplayPageBreaks               '※1、3
End Sub
'=================================================================================
Sub ページ区切りの表示状態を取得する()
    表示状態 = ActiveSheet.DisplayPageBreaks    '※1
    If 表示状態 = True Then
        MsgBox "ページ区切りが表示されています。", , "すぐマク"
    Else
        MsgBox "ページ区切りは表示されていません。", , "すぐマク"
    End If
End Sub
'=================================================================================
<コメント>
※1 DisplayPageBreaksプロパティをDisplayAutomaticPageBreaksプロパティ(非表示のメンバー)に
  置換可能
※2 True:表示する、False:非表示にする
※3 ページ区切りが表示されていれば非表示となり、非表示であれば表示される


5) 印刷範囲設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub 印刷範囲を設定する()
    ActiveSheet.PageSetup.PrintArea = "$A$1:$E$30" '印刷範囲 ※1、2
End Sub
'---------------------------------------------------------------------------------
Sub 印刷範囲を変数で設定する()
    印刷範囲 = "$A$1:$E$30"                     '※1、2
    ActiveSheet.PageSetup.PrintArea = 印刷範囲
End Sub
'---------------------------------------------------------------------------------
Sub アクティブセル領域を印刷範囲として設定する()
    セル範囲 = "$A$1:$E$30"                     '※3
    Range(セル範囲).Select                      'セル範囲を選択する
    ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address
End Sub
'---------------------------------------------------------------------------------
Sub 印刷範囲を取得する()
    印刷範囲 = ActiveSheet.PageSetup.PrintArea
End Sub
'---------------------------------------------------------------------------------
Sub 印刷範囲をクリアする()
    ActiveSheet.PageSetup.PrintArea = ""
End Sub
'=================================================================================
<コメント>
※1 $A$1:$E$30には印刷範囲の左上と右下セル番号を記入、
   この場合、列名での指定は$A:$E、行番号での指定は$1:$5のように記入
※2 複数範囲を指定したければ $A$1:$E$30,$A$41:$E$50 のようにカンマで区切って書く
   この場合、カンマ位置で改ページされる
※3 $A$1:$E$30にはセル範囲の左上と右下セル番号を記入


6) ページ設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Sub ページ設定する()
    With ActiveSheet.PageSetup                  '※2
        .PrintTitleRows = "$1:$10"              '行タイトル ※3
        .PrintTitleColumns = "$A:$E"            '列タイトル ※4
        .PrintArea = "$A$1:$E$30"               '印刷範囲 ※1
    End With
End Sub
'---------------------------------------------------------------------------------
Sub ページ設定ダイアログボックスを表示する()
    Application.Dialogs(xlDialogPageSetup).Show
End Sub
'=================================================================================
<コメント>
※1 $A$1:$E$30には印刷範囲の左上と右下セル番号を記入
※2 この行の下の3行は必要なものだけ記入
※3 $1:$10には行タイトルの上端と下端セル番号を記入
※4 $A:$Eには列タイトルの左端と右端セル番号を記入


7) ページ詳細設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'---------------------------------------------------------------------------------
Sub ページの詳細設定する()
    With ActiveSheet.PageSetup                  '※1
        .PrintTitleRows = "$1:$10"              '行タイトル ※2
        .PrintTitleColumns = "$A:$E"            '列タイトル ※3
        .PrintArea = "$A$1:$E$30"               '印刷範囲 ※4
        .LeftMargin = Application.InchesToPoints(0.787)   '左余白(25.2mmに対する%)※5
        .RightMargin = Application.InchesToPoints(0.787)  '右 〃
        .TopMargin = Application.InchesToPoints(0.984)    '上 〃
        .BottomMargin = Application.InchesToPoints(0.984) '下 〃
        .HeaderMargin = Application.InchesToPoints(0.512) 'ヘッダー余白
        .FooterMargin = Application.InchesToPoints(0.512) 'フッター 〃
        .PrintHeadings = False                  '行列番号 True:印刷する  False:しない
        .PrintGridlines = False                 'セル枠線 True:印刷する  False:しない
        .PrintNotes = False                     'セルメモ True:印刷する  False:しない
        .PrintQuality = 300                     '印刷品質(ドライバー制約に注意)
        .CenterHorizontally = False             '水平中央寄せ True:する  False:しない
        .CenterVertically = False               '垂直中央寄せ True:する  False:しない
        .Orientation = xlPortrait               '印刷の向き xlPortrait:縦  xlLandscape:横
        .Draft = False                          '簡易印刷 True:する  False:しない
        .PaperSize = xlPaperA4                  '用紙サイズ xlPaperA4:A4 ※6
        .FirstPageNumber = xlAutomatic          '先頭ページ番号 ※7 
        .Order = xlDownThenOver                 'ページ付番順 ※8
        .BlackAndWhite = False                  '白黒印刷 True:する  False:しない
        .Zoom = 100                             '印刷倍率 ※9
        .FitToPagesWide = 1                     '横 1ページに印刷 ※10
        .FitToPagesTall = 1                     '縦 1   〃   ※10
        .PrintErrors = xlPrintErrorsDisplayed   'セルのエラー ※11
    End With
End Sub
'=================================================================================
<コメント>
※1 この行の下の28行は必要なものだけ記入
※2 $1:$10には行タイトルの上端と下端セル番号を記入
※3 $A:$Eには列タイトルの左端と右端セル番号を記入
※4 $A$1:$E$30には印刷範囲の左上と右下セル番号を記入
※5 InchesToPointsをCentimetersToPointsに変えるとcm指定可能
※6 PaperSizeプロパティの定数一覧表は こちら (Macintoshでは指定不可能)
※7 xlAutomatic:自動 整数:その番号から
※8 xlDownThenOver または xlOverThenDown
※9 10~400%以内で指定 False:しない
※10 FitToPagesWide、FitToPagesTallを指定する場合は Zoomを falseにする
※11 xlPrintErrorsDisplayed:そのまま、xlPrintErrorsBlank : 空白に、xlPrintErrorsDash : ダッシュに、
    xlPrintErrorsNA : #N/Aと


8) ヘッダー・フッター書式設定 このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
Private Sub ページ番号などをヘッダーとフッターに設定する()
    With ActiveSheet.PageSetup
        .LeftHeader = "&P"
        .CenterHeader = "&P+5"
        .RightHeader = "&P-5"
        .LeftFooter = "&B &P"
        .CenterFooter = "&I &P / &N"
        .RightFooter = "&B&I&P / &N"
    End With
End Sub
'---------------------------------------------------------------------------------
Private Sub ページ番号を1000加えてフッターに設定する()
    ActiveSheet.PageSetup.CenterFooter = "&p+1000" '※4
End Sub
'---------------------------------------------------------------------------------
Private Sub ファイル名と日付をヘッダーとフッターに設定する()
    With ActiveSheet.PageSetup
        .LeftHeader = "&F"
        .CenterHeader = "&E&14&F &A"
        .RightHeader = "&A"
        .LeftFooter = "&D"
        .CenterFooter = "&U&D &T"
        .RightFooter = "&S&T"
    End With
End Sub
'---------------------------------------------------------------------------------
Private Sub フォントを指定してヘッダーとフッターを設定する()
    With ActiveSheet.PageSetup
        .LeftHeader = "&""MS Pゴシック""MS Pゴシック"
        .CenterHeader = "&""DF特太ゴシック体,標準""&16DF特太ゴシック体"
        .RightHeader = "&""HG丸ゴシックM-PRO,メディウム""HG丸ゴシックM-PRO"
        .LeftFooter = "&""MS 明朝,標準""MS 明朝"
        .CenterFooter = "&""MS P明朝,標準""MS P明朝"
        .RightFooter = "&""MS ゴシック,標準""MS ゴシック"
    End With
End Sub
'=================================================================================
<コメント>
※1 LeftHeader、CenterHeader、RightHeaderとは、左側、中央、右側ヘッダー
※2 LeftFooter、CenterFooter、RightFooterとは、左側、中央、右側フッター
※3 書式コード一覧表は こちら
※4 この場合 1ページ目なら 1001 となる
サンプルブックのダウンロードは ここをクリック (YNxv211_header.xls 89KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。


9) 幅と高さを1ページに収める このページのトップへ もくじへ 使用可能なExcelのバージョン
'---------------------------------------------------------------------------------
Sub 幅と高さを1ページに収まるように印刷する()
    With Worksheets("SSS").PageSetup
        .Zoom = False
        .FitToPagesTall = 1
        .FitToPagesWide = 1
    End With
    ActiveSheet.PrintPreview                    '印刷(プリント)プレビュー
End Sub
'---------------------------------------------------------------------------------
<コメント>
※1 FitToPagesTallプロパティ: 縦何ページ分で収めるかを示す値をセットする
※2 FitToPagesWideプロパティ: 横何ページ分で収めるかを示す値をセットする
※3 Zoomプロパティは Falseに設定すること
サンプルブックのダウンロードは ここをクリック (YNxv211_osameru.xls 51KB)
※ 一旦、ブックをハードディスクに保存し、開き直してから実行してください。

Excel VBA Macro