戻る HOME

Excel で個人票(2/2) 〜 VBA で印刷を自動化〜


 「Excel で個人票(1/2) 〜 VLOOKUP の利用〜」のページでご紹介した方法で VLOOKUP 関数をうまく使えば、個人票の印刷ができます。しかし、生徒の人数分だけ出席番号の入力と印刷コマンドを実行しなければならないので面倒です。
 そこでこれを自動化するマクロを作ってみました。コピー&ペーストでモジュールシートに貼り付けて使用できます。モジュールシートでの操作およびマクロ実行については、「名簿用の罫線マクロ(1/2)」のページを参考にしてください。


'---------- ここから ----------

'■■■個人票印刷マクロ■■■


Sub 個人票印刷()
'変数の宣言
  Dim i As Integer
  Dim MySheetName As String

'確認メッセージの表示 (キャンセルの場合マクロを抜ける)
  If MsgBox("個人票の印刷をはじめます。" & Chr(13) & Chr(13) _
      & "プリンタの準備はよろしいですか?", vbOKCancel) = vbCancel Then
    Exit Sub
  End If
'アクティブシートのシート名取得
  MySheetName = ActiveSheet.Name
'画面表示更新の停止
  Application.ScreenUpdating = False
'印刷用シートの選択
  Sheets("Report").Select   '【1】
'印刷ループ開始
  For i = 1 To 40         '【2】
   '出席番号の代入
    Range("A1").Value = i   '【3】
   '印刷
    ActiveSheet.PrintOut
  Next i
'元のシートに戻る
  Sheets(MySheetName).Select
'画面表示更新の許可
  Application.ScreenUpdating = True
'確認メッセージの表示
  MsgBox "個人票の印刷が終わりました。"
End Sub

'---------- ここまで ----------


 【1】の行で印刷用のワークシートを呼び出しています。ここでは「 Report 」という名前のシートを例にしています。ご使用のワークシート名に置き換えてください。なお、シート名は必ず両側を半角のダブルクォーテーションマーク( " )でくくってください。
 【2】の行で生徒数分のループを命令しています。この例では 40 人にしてあります。必要な生徒数に書き換えてご使用ください。数字は半角数字にしてください。
 【3】の行で出席番号をセルの値に代入しています。ここでは印刷用シートの出席番号のセルを「 A1 」としていますが、実際にご使用になるシートのセル番地に置き換えてください。なお、セル番地も必ず両側を半角のダブルクォーテーションマーク( " )でくくってください。セル番地の指定は半角英数字でしてください。

 その他の点はこのままで良いと思いますが、お好みに合わせて改良してください。



戻る