「マクロは難しい。私には無理。」
そんな人はたくさんいると思いますが、ゆっくり丁寧に勉強していけば、いつかはできるようになります。
今回は、Excel(エクセル)で「マクロを使っての連続印刷」の方法を、初めてマクロをさわってみるという人を対象に、画像付きでできる限り分かりやすくお伝えしたいと思います。
今回お伝えするのは、名前一覧(リスト)の上から順にスケジュール表を印刷するマクロです。
どんなリストにも適応できるよう、お伝えできたらと思います。
マクロとは?(読まなくても大丈夫!)
マクロとは、Excelやその他のアプリケーションで繰り返し行う操作を自動化するためのツールです。Visual Basic for Applications(VBA)というプログラミング言語を使用して、操作の手順を記録し、再生することができます。例えば、毎日行うデータの整列や特定の計算を自動化することができます。
マクロを使うための準備
まずは、エクセルでマクロを使うための設定を行いましょう。
開発タブを表示する
マクロを使う為には、エクセルのリボンに「開発」タブを表示する必要があります。(すでに表示されている方はとばしてOK!)
- エクセルを開きます。
- 「ファイル」タブをクリックし、「オプション」を選択します。
- 「エクセルのオプション」ウィンドウが開いたら、「リボンのユーザー設定」を選びます。
- 右側の「主なタブ」のリストから「開発」にチェックを入れ、「OK」をクリックします。
ファイルのオプションはコチラ。ここが「その他」となっている方は、「その他」をクリックすると「オプション」を選択できると思います。
「開発」の右にあるチェックボックスに、チェックを入れてください。
(古いExcelをご使用の方は、左側のリストから「開発」を探していただいて、真ん中の「追加」を押していただく必要があると思います。)
これで、リボンに「開発」タブが表示され、マクロを使用する準備が整いました!
一覧から名前を入力して、順番に印刷するマクロの作成手順
エクセルのファイルであれば、どんな形式のファイルでもマクロを作成することは出来ますので、既存のファイル、もしくは新規の空白ブックを用意します。
マクロを組んだファイルは、最終的に「.xlsm(マクロ有効ファイル)」という拡張子で保存することになります。
既存のファイルを使用した場合、既存のファイルは残って、新たに、マクロ有効ファイルとして保存することになります。
1. 一覧(リスト)の作成
まずは、印刷したいリストを作成します。(これは、別シートでも同シートでも可能です。今回は分かりやすいように、同じシート上に作成します。)
こんな形のスケジュールを用意しました。
J列にある名前一覧の名前を順に、D1セルに入力して印刷します。リストは9名分ですが、約100万人分は入力することができます。同シートに名前リストがあるとそこも印刷の範囲になってしまうので、マクロを組む前に印刷範囲の設定をしてください。
2. マクロの記録で、データをコピーして印刷するマクロを作ってみる
次に、リストの一つ目をコピーして印刷するをマクロを「マクロの記録」で作ってみます。
- 「開発」タブをクリックし、「マクロの記録」を選択します。
- マクロ名を入力し、「OK」をクリックします。
- リストの名前(一人目)をコピー&ペーストします。
- 「印刷」をクリックします。(本当に印刷しなくても大丈夫)
- 「開発」タブに戻り、「記録終了」をクリックします。
「マクロの記録」とは、Excelで行った操作を記録し、同じ作業を自動でおこなってくれる機能です。繰り返し行う作業を効率化することができるんです。
「マクロの記録」はVBAの知識が無くても使うことができます。
開発タブの「マクロの記録」を選択します。
名前を入力して「OK」を押すと、マクロの記録が開始します。
「記録終了」のボタンを押すまで、作業している内容をVBA言語でコードとして記録してくれるので、名前をコピーして、入力したいマスにペーストして、印刷します。
「記録終了」を押すと、マクロの記録が完了します。
この状態で、「マクロ」を押すと、先ほど付けた名前のマクロが作成されています。
ここで、選択されているマクロを実行すると、「”北海道 一郎”をコピペして1枚印刷」をやってくれます。
マクロの記録なら私もできそう!
でも、印刷するだけなら、別にマクロ使わなくてもいいんだよな~。
ただ、今回はリストの一覧にある人全員のスケジュールを順番に印刷したいので、更にマクロを編集してみます。(コピーするだけでできるようにしてあるので、一度やってみてください!)
3. マクロの編集
記録したマクロを編集して、マクロを完成させます。
- 「開発」タブから「マクロ」をクリックし、記録したマクロ(名前をコピーして印刷)を選択して「編集」をクリックします。
- VBAエディター(Microsoft Visual Basic for Applications)が開きますので、マクロを編集(コードを記入)します。
- そのまま閉じます
先ほど作成したマクロを次は「編集」します。
英語ばかりで記載されたウインドウが表示されますね。初めて見る人はここで諦めてしまいがちですが、頑張って先に進みましょう。
赤枠の中が、実際に行った作業のコードです。
このコードを全て削除し、
下記のコードを入力します。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 10).End(xlUp).Row
For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10)
ActiveSheet.PrintOut
Next i
End Sub
こんな感じ。
マクロデータはExcelブックに保存されるので、この画面はそのまま閉じてください。
すると、元のExcelの開きます。マクロの編集はこれで完了です。
4. マクロの実行
編集が完了したら、マクロを実行してリストの名前を順番に印刷します。
- 「開発」タブから「マクロ」をクリックし、編集したマクロを選択して「実行」をクリックします。
実行ボタンを押した瞬間に、マクロが起動して印刷が開始されます。
このマクロだと、名前リストに記載のある人数分(全員)のスケジュールが印刷されますので、心配だったらリストの人数を減らして、テストしてみることをおすすめします!
5. 保存方法
マクロを組んだファイルは、保存形式が変わり、「.xlsm(マクロ有効ファイル)」という拡張子で保存することになります。
そのため、保存する場合は「名前をつけて保存」( F12キーでも可 )を選択し、ファイルの種類を「Excel マクロ有効ブック(*.xlsm)」に変更して保存してください。
また、マクロ有効ファイルを開いた時は、マクロが無効の状態で開きますので、それを有効にする必要があります。
コードの説明
今回使用したコードがこちら。
上から簡単に説明すると、① 名前の列(J列)の最後が何行目なのか確認して、② 名前の列の2行目から最後の行まで、「名前をコピーして、スケジュールに入力して、印刷する」。
これをやっているだけです。
Sub 名前をコピーして印刷()
Dim i As Long
Dim LastRow As Long
① LastRow = Cells(Rows.Count, 10).End(xlUp).Row
② For i = 2 To LastRow ' 2行目から最終行まで
Cells(1, 4) = Cells(i, 10)
ActiveSheet.PrintOut
Next i
End Sub
Sub 名前をコピーして印刷() ・・・
ここから、”名前をコピーして印刷”という名前のマクロコードを記載しますね!
Dim i As Long ・・・
”i” っていう名前の物を使うよ。”i” にはいろんな数字が入るよ!
” LastRow ” も一緒だよ!と、宣誓しています。
LastRow = Cells(Rows.Count, 10).End(xlUp).Row・・・
J列の最終行を ” LastRow ” に入力します!今回のリストだと、10行目が最終になるので、
LastRow=10 となります。
例えば、B4のセルは、cells(4,2) と記載されます。
LastRow = Cells(Rows.Count, 10).End(xlUp).RowでJ列に文字が入力されている最終行を検索しているのですが、これをB列にしたい場合は、10のところを2にすればいいんです。
For i = 2 To LastRow ~ Next i ・・・
まずはiに2を入れて、この先のコードを実行してね。Next i までいったら、iに3を入れてね。
LastRow で最後だよ!
Cells(1, 4) = Cells(i, 10) ・・・
D1セルに、J列のi行目のセルの中身を入力してね!
ActiveSheet.PrintOut ・・・
印刷しますよ!
End Sub ・・・
これで、マクロ終了です!
ちなみに、このマクロは、現在開いているブック・シート(Activebook、Activesheet)で実行するコードです。別のシートを印刷する場合は、シートを選ぶ記述が必要になります。
エラーが出たらどうすればいいの?
マクロの記述(コードの入力)を間違えると、こんな感じでエラーが表示されます。
コードの記載を間違えると、入力中にこんな表示がでて、間違ってるよ!と教えてくれます。
今回の記述では、「Row.」の「.」が不要なので、それを消せばエラー表示は解消されます。
また、コードの記述自体に間違いが無くても、プログラムとして間違っていると、マクロを実行した際にVBAが開き、こんな感じで表示されます。
できると思っていたマクロがエラーとなると、ショックですが、こうなったら順番に確認して修正していくしかありません。
この記述では、「n」と「i」を間違えて記載しているので、そこを修正するだけです。
修正したら、「■」ボタンを押して、ウインドウを閉じます。
間違っている記述がはっきりしていると、間違っているところを教えてくれます。
ただ、すべての間違いを教えてくれる訳ではありません。
簡単な間違いならいいのですが、基本的には順番に間違いを確認していく必要があります。
まとめ
今回は、「マクロを使っての連続印刷」の方法を、画像付きでできる限り分かりやすくお伝えしてみました。分かりにくいと感じた方、良ければご連絡ください!
次回は、このマクロをいじって自分好みのマクロに変更していく方法をお伝えしたいと思うので少々お待ちください!