まとかまとか。

とーこさるみ

フクロモモンガ / 猫 / プログラム / お絵かき / 猫あつめ / 籐

【備忘】VBA/ワークシートの印刷設定

ExcelにてVBAマクロを使う機会が最近多くなってきたので備忘用のメモ
★印刷設定を行うワークシート情報と各種印刷情報を引数として渡して設定する

'*******************************************************************************************************
'ワークシートの印刷設定を行う
'
'@param Worksheet   ws_print                    印刷設定を行うワークシート
'@param String      cell_print_start            印刷開始セル(A1形式)
'@param String      cell_print_end              印刷開始セル(A1形式)
'@param Boolean     bln_print_1page             true:1ページに印刷する
'@param Long        margin_top                  余白上
'@param Long        margin_bottom               余白下
'@param Long        margin_left                 余白左
'@param Long        margin_right                余白右
'@param Long        margin_header               余白ヘッダー
'@param Long        margin_footer               余白フッター
'@param Boolean     bln_center_horizontally     true:水平中央寄せ
'@param Boolean     bln_center_vertically       true:垂直中央寄せ
'@param Long        page_size                   ページサイズ(A3=8/A4=9/A5=11)
'@param Long        page_view                   ワークシートのページビュー(標準=1/改ページプレビュー=2/ページレイアウト=3)
'
'@returns なし
'*******************************************************************************************************
Sub printPageSetUp( _
     ByRef ws_print As Worksheet _
     , ByVal cell_print_start As String _
     , ByVal cell_print_end As String _
     , ByVal bln_print_1page As Boolean _
     , ByVal margin_top As Long _
     , ByVal margin_bottom As Long _
     , ByVal margin_left As Long _
     , ByVal margin_right As Long _
     , ByVal margin_header As Long _
     , ByVal margin_footer As Long _
     , ByVal bln_center_horizontally As Boolean _
     , ByVal bln_center_vertically As Boolean _
     , ByVal page_size As Long _
)

        'ワークシートをアクティヴにする
        ws_print.Activate

        On Error GoTo localError
     With ws_print.PageSetup

         '印刷エリアの設定
         .PrintArea = ws_print.Range(cell_print_start & ":" & cell_print_end).Address

         '印刷サイズの設定
         .PageSize = page_size

         'シートを1ページに印刷
         If bln_print_1page Then
             .Zoom = False
             .FitToPagesWide = 1
             .FitToPagesTall = 1
         End If

         '余白設定
         .TopMargin = Application.CentimetersToPoints(margin_top)        '上余白
         .BottomMargin = Application.CentimetersToPoints(margin_bottom)  '下余白
         .LeftMargin = Application.CentimetersToPoints(margin_left)      '左余白
         .RightMargin = Application.CentimetersToPoints(margin_right)    '右余白
         .HeaderMargin = Application.CentimetersToPoints(margin_header)  'ヘッダー余白
         .FooterMargin = Application.CentimetersToPoints(margin_footer)  'フッター余白

         '印刷位置の設定
         .CenterHorizontally = bln_center_horizontally                   '水平
         .CenterVertically = bln_center_vertically                       '垂直

     End With

     'ワークシートのページビューを設定
     ActiveWindow.View = page_view

     Exit Sub

localError:
     MsgBox "エラー番号:" & Err.Number & vbCrLf & _
            "エラーの種類:" & Err.Description, vbExclamation

End Sub

★呼び出し例

call printPageSetUp(ws,"A1","P100",true,0.9,0.9,0.9,0.9,0.5,0.5,false,false,8,1)