4.連続印刷マクロを組む②

連続印刷を実行するマクロの書き方は3段階に分けて説明します。

 

第1段階 1枚目を印刷する

第2段階 1枚目から5枚目まで連続印刷する

第3段階 M枚目からN枚目まで連続印刷する

 

 

結論だけ知りたい!という先生は次の第3段階まで進んで構いません。

しっかり基礎を固めていきたい。という先生はこのまま読み進めてください。

 


1枚目から5枚目を印刷するマクロ


[印刷一覧]B2セルへの値の入力
[印刷レイアウト]の印刷

を次のように繰り返す。

① "1" を入力する

② 印刷する 

③ "2" を入力する

④ 印刷する
 

⑤ "3" を入力する

⑥ 印刷する
 

⑦ "4
" を入力する

⑧ 印刷する 

⑨ "5" を入力する

⑩ 印刷する
 

 

処理①~⑩をワンクリックで実行するマクロを作成します。

 

 


作成手順

  1. VBEを開く
  2. コード作成
  3. ボタンに「マクロの登録」し直す

 


1.VBEを開く


① [Alt,F11]・・・VBEをひらく

② [Windows,←][Windows,→]・・・左右に並べて表示する

 


4. コード作成


① [Module1]のコードを編集する

Sub 連続印刷1枚目()
Worksheets("印刷一覧").Cells(2,2) = 1
Worksheets("印刷レイアウト").PrintOut

End Sub

Option Explicit
Sub 連続印刷1枚目から5枚目()
Dim i as long
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next

End Sub

 

第2段階のコードは完成です。

書き換えた部分について、解説していきます。

 


コードの解説


Option Explicit
Sub 連続印刷1枚目から5枚目()
    Dim i as long
    For i = 1 to 5
        Worksheets("印刷一覧").Cells(2,2) = i
        Worksheets("印刷レイアウト").PrintOut
    Next

End Sub


1行目

Option Explicit

 

変数の宣言を強制

「変数の宣言を強制する」ための命令文です。

「変数」を扱う上で、記載すべきコードです。

(「変数」については後述します。)

コードをベタ打ちするのは手間ですので、自動で入力する方法を紹介します。


① VBEで[ツール]-[オプション]をクリック
② 「自動構文チェック」をOFFにする
③ 「変数の宣言を強制する」をONにする
④[OK]をクリック
⑤ VBEで[挿入]-[標準モジュール]をクリック
⑥ "Option Explicit"が入力された[Module2]ができる


「変数の宣言の強制」をONにすると、新しく標準モジュールを挿入したタイミングで「Option Explicit」が補完されるようになります。

一度設定してしまえば、これ以降改めて設定し直す必要はありません。 


補足1

この「変数の宣言を強制する」は、一般的には、ExcelVBAを学ぶときまずはじめに行うべき設定だと言われています。

しかし、本サイトではあえて触れてきませんでした。

これまで「変数」を扱うことがなかったからです。

しかし、連続印刷を実行するマクロには「変数」は欠かせません。

ですので、このタイミングで説明に加えました。

 

本サイトでは、校務に活用する範疇で「変数」を扱い、説明をしていきます。


 

2行目

Sub 連続印刷1枚目から5枚目() 

 

マクロ名の変更 

マクロ名はどんな処理をするのか、できるだけ具体的に書くようにします。

前回「マクロの登録をする」ときにリストからマクロ名を選択しました。

マクロの数が増えていったとしても、判別しやすいように工夫しましょう。

 

3行目

Dim  as long

 

訳:
長整数として変数 i を使うこと宣言します

変数  i  の宣言

この宣言があることで、変数 i を処理の中で使っていくことができます。

long(長整数)について詳しく知りたい方は「VBA long」で検索すると解説ページがたくさん出てきますので、調べてみてください。

 

4-7行目

For  i  =  1  to  5 
    Worksheets("印刷一覧").Cells(2,2) =
    Worksheets("印刷レイアウト").PrintOut
Next

 

訳:
変数 i  1 から 5 まで1ずつ増やしながら
  [印刷一覧]のセルB2に変数 i を代入して
  [印刷レイアウト]を印刷する
 という処理を繰り返す」

 

For・・・Next

For・・・Nextは、間にある処理を回数分繰り返し実行する命令文です。

 


補足2

For・・・Next文について、補足します。

次の2つのコードを見比べてみてください。

まるFor・・・Nextありの例

Option Explicit
Sub 連続印刷1枚目から5枚目()
Dim i as long
For i = 1 to 5
Worksheets("印刷一覧").Cells(2,2) = i
Worksheets("印刷レイアウト").PrintOut
Next
End Sub

 

バツFor・・・Nextなしの例

Option Explicit
Sub 連続印刷1枚目から5枚目()
Worksheets("印刷一覧").Cells(2,2) = 1

Worksheets("印刷レイアウト").PrintOut

Worksheets("印刷一覧").Cells(2,2) = 2
Worksheets("印刷レイアウト").PrintOut

Worksheets("印刷一覧").Cells(2,2) = 3
Worksheets("印刷レイアウト").PrintOut

Worksheets("印刷一覧").Cells(2,2) = 4
Worksheets("印刷レイアウト").PrintOut

Worksheets("印刷一覧").Cells(2,2) = 5
Worksheets("印刷レイアウト").PrintOut
End Sub

 

ExcelVBAでは、同じコードを書くことは極力さけます。

バツFor・・・Nextなしの例では、青字のコードが5回も繰り返し記載されています。

一方、まるFor・・・Nextありの方は、1回の記載で済んでいます。

印刷枚数5枚の例ですので違いをあまり感じませんが、もし100枚印刷するとなったらどうでしょうか。

For・・・Next文を使わないとなると、100回も記載しなければならなくなります。

マクロを使うメリットが感じられませんよね。

For・・・Next文は連続印刷のマクロを組むときに不可欠ですので、必ず身につけましょう。


 コードの解説は以上です。

最後に編集したマクロを[印刷一覧]のボタンに登録し直します。


3.ボタンに「マクロの登録」をし直す


①[印刷一覧]シートを開く

② B5セルあたりのボタンを右クリックする

③「 マクロの登録」をクリック

④ 「連続印刷1枚目から5枚目」を選択してOK

 

試しにクリックしてみてください。

ワンクリックするだけで、5枚分の印刷が実行されます。

 

 


まとめ・次回


『第二部-1枚目から5枚目まで連続印刷する』は以上です。

連続印刷ができるようになったものの、まだ実用的ではありません。

開始番号と終了番号がコード内にベタ打ちされているためです。

 

印刷する番号を指定するのに、[Alt,F11]でVBEを起動してコードを書き換えることは誰にでもできることではありません。

どの先生にも容易に連続印刷を実行してもらえるように、さらに工夫を加えます。

具体的には[印刷一覧]B2,B3セルの値から印刷する番号を指定できるようにします。

 

次回はいよいよ『第3段階-m枚目からn枚目まで連続印刷する』を説明します。

これまでのファイルを引き続き編集していきますので、保存しておきましょう。

 

 


 

 

<<
3-連続印刷マクロを組む①
  >>
5-連続印刷マクロを組む③