【Excel】印刷設定画面を起動する(初期値を指定する)

まずは印刷設定画面を起動する」を参照

「Application.Dialogs(xlDialogPrint).Show」メソッドに以下の引数を渡すことで初期値を設定可能

arg1 = 印刷範囲(1:すべて、2:ページ指定)
arg2 = 開始
arg3 = 終了
arg4 = 部数
arg5 = 簡易印刷(0:しない、1:する) ※1:するにした場合は罫線などが表示されない
arg6 = 印刷プレビュー(Excel5以降のVBAの場合機能しません。代わりにxlDialogPrintPreviewダイアログを使用してください。)
arg7 = メモ印刷(1:シートとセルの値のみ、2:コメントも
arg8 = カラー印刷※Mac用
arg9 = 紙送り(1:連続紙カセット用、2:カットシートまたは手動フィード)※Mac用
arg10 = 印刷品質(dpi)
arg11 = 縦方向の解像度(dpi)
arg12 = 印刷対象(1:選択した部分、2:ブック全体、3:選択したシート、4:テーブル)
arg13 = プリンタ名
arg14 = ファイルへ出力(False:チェックOFF、True:チェックON)
arg15 = 部単位で印刷(False:チェックOFF、True:チェックON)

●ソースコード(実装例) ※設定不要な部分は省略可

Sub 印刷ダイアログ()
Application.Dialogs(xlDialogPrint).Show _
Arg1:=2, _
Arg2:=1, _
Arg3:=2, _
Arg4:=5, _
Arg5:=0, _
Arg6:=False, _
Arg7:=2, _
Arg8:=1, _
Arg9:=1, _
Arg10:=600, _
Arg11:=600, _
Arg12:=3, _
Arg13:="Microsoft Print to PDF", _
Arg14:=True, _
Arg15:=False
End Sub

【Excel】印刷1毎ごとに表示する氏名を変える

①名前リストのシートを用意

②印刷するシートを用意
※赤枠部分に「社員マスタ」シートの氏名を、印刷する1毎ごと切り替わるようにします。

③マクロを使えるようにする
マクロを使えるようにする」を参照

④ボタンを配置する

⑤マクロに名前を付けて「新規作成」を押す

⑥ソースコードを記載して「Microsoft Visual Basic for Applications」画面を閉じる
  

●ソースコード

Sub 社員毎印刷()
Dim LastRow As Long
Dim i As Long
Dim myNo As Long

If vbNo = MsgBox("印刷を開始します。よろしいですか?", vbYesNo) Then Exit Sub

'社員マスタシートを指定'
With Worksheets("社員マスタ")
'社員マスターシートA列の最終入力行を取得'
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

'1行目から最終入力行までループ処理'
For i = 1 To LastRow

'1行ずつA列のNo.を取得'
myNo = .Range("A" & i).Value

'取得したNo.を日報シートのD3セルにセットし'
'印刷を開始'
'B3セルにはD3セルを指定したVLOOKUP関数が仕込まれているため、社員マスタシートの名称が表示される。'
With Worksheets("日報")
.Range("D3").Value = myNo
.PrintOut Copies:=1, Collate:=True
End With
Next i
End With

MsgBox "印刷が終了しました。"

End Sub

 

⑦B3セルに「=IFERROR(VLOOKUP(D3,社員マスタ!A1:B13,2),””)」と入力
※⑥で記載したソースコードでD3セルに「社員マスタ」シートの番号が入ります。
その番号をもとに名前を表示するためこの関数を利用します。

⑧D3セルの文字を白にする
※D3セルに「社員マスタ」シートのNo.を埋め込んでいるのを隠すため