点呼表をExcelVBAで配車表から自動作成 その1
運送会社の必須書類のひとつ、点呼簿。毎日作成するものですよね。
この点呼簿も毎日の運行予定を配車係が作成して、その配車表をもとに運行管理者のような点呼を行う担当者が点呼表にその日の担当業務内容を簡記することが多いと思います。
この二つの表を見てもらうと同じデータになっているセルが多いことがわかると思います。ということは、配車予定表を作成すれば、点呼記録表は配車予定表のデータをそのまま流用することができるということです。
Excelを使ったことがある人であれば、点呼記録表の各セルにIndex関数かVLookup関数など記述して、参照することができるということは思いつくと思います。
また、この配車予定表や点呼記録表には、複数のシートがあるため、そのすべてのシートに関数を記述していくのは手間のかかる作業です。
そんな二つの表に新規で人を追加しないといけなかったり、人が辞めて削除しなければいけなかったりという場合、このそれぞれのExcelBookで複数のシートに対して行追加や行削除という方法を使って行わなければなりませんし、新たに追加した行には、関数式の追加という作業が発生します。
そこで、VBAを使ってこれらの作業を自動化するということを考えてみましょう。
事前準備として、同じフォルダー内に配車予定表と点呼記録表という二つのExcelBookを作成し、配車予定表シートと点呼記録簿シートを作ります。シート数は、何枚でもかまいませんが、わかりやすくするために「平日用」と「休日用」の2シートずつにします。
保存するときは、同じフォルダに名前を付けて保存でマクロ付きファイルにします。
1.まずは、シートの行追加と行削除です。
2.プロシージャ名は何でも構いません。今回は、insRowとしました。
まず、必要な変数とオブジェクトを宣言します。
”folderPath = ” ”filePath = ” 部分でもとになる配車予定表のパスと点呼記録簿のファイル名をそれぞれの変数に代入します。
”intr = ” で行を挿入するセルの行番号を変数に代入します。
Application.............. は、なくてもいい処理です。
準備ができたので、いよいよプログラムにはいっていきます。
wb に 配車予定表をセットし、その配車予定表に作成しているシート数分だけ、繰り返し処理を行います。今回は、平日と休日の二つのシ
ートがあるので、2回繰り返し処理が行われます。
繰り返し処理の内容は、配車予定表のシート1で指定したセルがある行に1行分の行挿入を行うという処理になっています。
ここで配車予定表の各シートに行を挿入する処理は、完了です。
3.次は点呼記録表の処理です。
先ほど指定した点呼記録表のファイルパスを使って、点呼記録表.xlsm を起動し、wb2 というオブジェクトとして使います。
こちらも先ほどと同じように繰り返し処理で、指定した行に挿入処理を行います。
最後に、点呼記録表を保存、終了した後、配車予定表のシートを選択します。
4.この連続処理は、配車予定表や点呼記録表のそれぞれのシート数が増えても同じコードで対応できるようになっていますので、シート数を変更しても作り変える必要がありません。
また、この繰り返し処理は、ExcelBookのいろんな反復処理に使えると思いますので、いろいろ応用してみてください。
この記事について、わからないことやご質問などありましたら、下記のお問い合わせフォームからお願いいたします。
公務員時代は情報管理の仕事で物品管理システムや業務の自動化などに約30年携わってきました。今は会社勤めをしながらフリーランスでWordPressを使ったWebサイトの制作、運用代行、サイト構築のアドバイスやVBA・Pythonでの業務自動化など行っています。兵庫県三田市在住