新型コロナウイルスの影響で休業せざるを得ない時の補助金のひとつに雇用調整助成金があります。
難点は簡略化されたとはいえ、必要書類が多く準備するのは大変ですよね。
特に、休業申請の対象従業員が多い場合「休業・教育訓練実績一覧表」は複数枚作成する必要がありデータを入力するのがとても面倒です。
なぜなら、厚生労働省のサイトで用意されたエクセルファイルはお役所が作る「神エクセル」の典型で、箸にも棒にもかからない入力フォームだからです。
当助成金のオンライン申請フォームもありますが、申請書作成作業はそれほど楽になりません。この神エクセルで申請書を作成しなければならないのは一緒です。
なぜなら、最終的にオンライン申請フォームに作成したファイルを添付する必要があるからです。
そこで、休業・教育訓練実績一覧表を自動作成するプログラムをVBAで作りましたので、シェアいたします。
このプログラムでは被保険者用の実績一覧表(様式9)と被保険者以外用(様式2)の実績一覧表をそれぞれ作れます。
かかる時間は100人分で数秒~十数秒です。
(当然のことですが、ネット上のどこかに個人情報や会社情報を転送するようなコードは含まれていません)
ソースコードを確認したい方はgithubでどうぞ。
https://github.com/ikuma-hiroyuki/koyouchousei_shinsei
使用手順を以下で解説していきます。
1. 自動作成プログラムをダウンロード
Youtubeでも使い方の解説をしています。
まずは以下のエクセルファイル(実績一覧表自動作成プログラム)をダウンロードして下さい。
休業・教育訓練実績一覧表_作成.xlsm
ファイルを開くと下の画像のような警告が表示されますが、「編集を有効にする」をクリックして下さい。
続いてセキュリティの警告が現れますが、これも「コンテンツの有効化」をクリックして下さい。
2. 全体設定を全て埋める
ダウンロードしたエクセルファイルには「全体設定」というシートがひとつだけ存在しています。
この情報をもとに実績一覧表を自動作成しますので黄色く塗られたセルを全て埋めてください。
注意事項は以下の通りです。
- 日付欄に西暦で入力すると和暦で表示されます
- 事業所番号の桁数(4桁-6桁-1桁)が違うとエラーメッセージが表示されます
(-
も入力して下さい)
(例: 1234-123456-1) - 所定労働時間は整数で入力してください
- 行、列の追加削除はしないで下さい
3. 休業・教育訓練した労働者のデータをCSVファイルで保存する
労働者のデータはCSVファイルでご用意ください。CSVファイルはエクセルファイルと似ていますが別のものです。
CSVファイルの作り方がよくわからない方は下記の「CSVの作り方」を参照して下さい。
参考までに、私がCSVファイルを作った方法を記載します。
私の勤務している会社では従業員の保険番号を「PCA給与DX」という給与計算ソフトで管理しています。
今回の実績一覧作成ではPCA給与DXから氏名と保険番号をCSV出力しました。
次に所定労働時間、労働者ごとの休業日数などは内製した勤怠管理ソフトで管理していますので、そちらもCSV出力。
この2つのCSVをエクセルで統合し、休業実績一覧に用いました。
(統合にはVlookup関数などを使用)
列の並び・入力規則に注意
労働者のデータを準備するときは列の並びを以下のようにしてください。
(タイトル行はあってもなくても構いません)
列 | 入れるデータ | 入力規則 |
1列目 | 氏名 | |
2列目 | 被保険者番号 | – (ハイフン)も入力してください |
3列目 | 月間所定労働日数 | 整数で入力 |
4列目 | 全日休業日数 | 整数で入力。該当なしは0と入力して下さい。 |
5列目 | 短時間休業時間 | 10進法で入力。該当なしは0と入力して下さい。 |
6列目 | 教育訓練日数 (被保険者以外用の場合この列は不要です) |
1日を1、半日を0.5で入力。該当なしは0と入力して下さい。 |
サンプルCSVファイルは以下からダウンロードできます。
自動作成プログラムにこのサンプルを読み込ませれば動作のイメージがつかめると思います。
実績一覧表用サンプルCSVファイル
※サンプルのデータは全て架空のものです。
データ取込時の処理
参考までに、データを取り込むときに以下のように処理を行っています。
なお、被保険者用は被保険者番号が入力されていない行は取り込みません。
被保険者以外用の場合は反対に被保険者番号が入力されていない行だけ取り込みます。
その他は、以下のとおりです。
- 氏名が空白の行が含まれていた場合エラーで止まります
- 被保険者番号の桁数(4桁-6桁-1桁)が違う場合はエラーで止まります
(被保険者用のみ) - 所定労働日数は小数点以下切り捨て
- 全日休業は小数点以下切り捨て
- 短時間休業時間は0.5単位で切り捨て (=30分単位)
※ 1時間未満だった場合、0時間で取り込みます - 教育訓練日数も0.5単位で切り捨て (=半日単位)
※なお、サンプルCSVファイルの短時間休業の中にはあえて0.5単位になっていないデータが含まれています(6,9,10行目等)。
自動作成プログラムで実績一覧表を作るときには0.5単位で丸められて数値が出力されますので、確認してみて下さい。
CSVの作り方
CSVファイルの作り方がわからない方のために作り方を簡単にご説明いたします。
まずはエクセルで労働者のデータを用意します。
データの用意が終わったらファイルを保存するときに以下の手順で保存するとCSVファイルになります。
- ファイルをクリック
- 名前を付けて保存をクリック
- CSV(コンマ区切り) (*.CSV)をクリック
※このとき、CSV-UTF-8 で保存すると自動作成プログラム読み込み時にエラーになるので注意してください。 - 保存をクリック
ちゃんとCSV形式で保存できたか確認するためには
- ファイルのアイコンを右クリック
- プロパティを表示して
- 「ファイルの種類」がCSVファイルになっていればOKです
4. 実績一覧表の原紙を自動作成プログラムと同じフォルダに入れる
厚生労働省の雇用調整助成金様式ダウンロードページから「新様式特第9号 休業・教育訓練実績一覧表」もしくは、「様式様式第2号(3) 休業実績一覧表」(以下、原紙と呼称)をダウンロードしてください。
注意点は大まかに以下の3つです。
- 原紙のシート名は変えないでください。
(変えるとプログラムが正常に作動しません) - 原紙には”基本的”に手を加えないで下さい
- ただし、以下の項目については手を加えることをオススメします
改ページ範囲 (2枚目の設定がおかしいので直す)
(5/24時点では修正されています)- 「休業」「教育訓練」のチェックボックスにあらかじめチェックを入れておく
5. 自動作成プログラムの「一覧表作成」ボタンを押す
最後に上記画像の一覧表作成ボタンを押します。
ボタンは2種類あり、被保険者用一覧表(様式9)と被保険者以外用(様式2)の一覧表をそれぞれ作成できます。
ボタンを押すと労働者ごとのデータが入ったCSVファイルを指定するダイアログ(問合せ画面)が表示されます。先ほど用意したCSVファイルを指定して下さい。
繰り返しになりますが被保険者用では保険番号が入力されていない行は取り込みません。
反対に被保険者以外用では保険番号が保険番号が入力されている行は取り込みません。この2点に注意してください。
あとは自動的に実績一覧表が作成されるのを待つだけです。100人程度の人数であれば数秒~十数秒程度で完成します。
以上です。
おわりに
バグを発見したらご一報いただければ幸いです。
コイデ says
被保険者番号が空白の対象者も取り込む場合は、コードをどのように書き換えればいいでしょうか?
DeskWorkKaizen says
コメントありがとうございます。
空白の対象者も取り込むには、WorkersクラスのGetWorkerプロシージャを以下のようにコードを修正します。
※「この部分を修正」とコメントアウトしてあります。
これを
If IsNumeric(Left(ary(1), 4)) Then '保険番号が入力されていたら(左4桁が数値)
このように
If IsNumeric(Left(ary(1), 4)) Or ary(1) = vbNullString Then 'この部分を修正
これを
Me.保険番号(worker_cnt) = ary(1)
このように
‘この部分を修正
If ary(1) = vbNullString Then
m_workers(worker_cnt).保険番号 = ary(1)
Else
Me.保険番号(worker_cnt) = ary(1)
End If
もっと手っ取り早くやるには、空白の対象者をとりあえず仮の値(9999-999999-9 のような)を入れておいて、最後に空白するという方法もありかと思います。
DeskWorkKaizen says
被保険者番号が空白でも取り込めるようにエクセルファイルを修正しました。
よろしければ再度ダウンロードして使ってみて下さいませ。
コイデ says
ありがとうございます!こちらのファイルで取り込むことができました。大変助かりました。
厚かましいお願いで申し訳ないですが、雇用保険被保険者以外の一覧表も作成しており、展開されているファイルのマクロを一部修正すれば、代用可能でしょうか?
VBAはほぼ初心者ですが、被保険者以外のフォーマットに合わせて、何とかコードを変えれないかと考えています。
以下がフォーマットになります。
https://www.mhlw.go.jp/content/11600000/000634839.xls
DeskWorkKaizen says
うまく取り込めたようで何よりです。
被保険者以外の一覧表のフォーマットのURLを見てみましたがリンク切れのようです。
もしかすると、いつの間にか↓
https://www.mhlw.go.jp/content/11600000/000639683.xls
に変わってしまったのかもしれません。
そうであればコード修正で対応できそうです。
せっかくなので被保険者以外対応版を作りますので、少々お待ちくださいませ。
火曜日までにはできるかと思います。
コイデ says
リンク切れすみません。。。
また、新しくお作りいただけるとのこと、大変感謝します。本当にありがとうございます!
DeskWorkKaizen says
被保険者以外用も作れるようにしました。
エクセルファイルをもう一度ダウンロードしてみてください。
被保険者以外用のボタンを新たに設置しましたので、それを押せば作成できます。
このとき、保険者番号が空白の行だけを取り込みます。
それに合わせて、前回の「被保険者用の実績一覧表を作る時に保険番号が入力されていない場合でも取り込めるようにする」というのは元に戻しました。
(つまり、被保険者様の実績一覧表は保険番号が入力されていないと取り込めません)
私はプログラムを書くこと自体が楽しいので、それで世の中のお役に立てれば幸いです。
たかたこ says
厚労省のファイルがえらく使いづらく、何かいいものがないかと探して
たどり着きました。
『こういうのが欲しかった!』と、早速試したところ
実行時エラー 76
パスが見つかりません というメッセージが出てしまいす。
デバックする を みると 以下の表示のところが 黄色く反転していました。
ChDir ThisWorkbook.Path
また、最近 ファイルが更新されたのか
被保険者用 が 000639678.xls に代わっています。
ファイル名を 000624799 に 変えてみても 上手く走りませんでした。
厚かましいお願いで恐縮ですが 修正していただけると
涙が出るほど嬉しいです。
宜しくお願い致します。
DeskWorkKaizen says
こんにちは。
エラーにならないよう修正してみましたので、再度ダウンロードしてみて下さい。
一応、私の手元の環境では正常に動きました。
それにしてもChDir ThisWorkbook.Path がエラーになるというのはなかなかレアなケースですね。
この部分がエラーになってもいいように修正したのと、
様式9号の原紙を自分で指定する方式に修正しました。
またエラーになったらもう少し修正してみますので、そのときはご連絡いただければ幸いです。
たかたこ says
Deskwork KAIZEN様
早速に修正していただきありがとうございました。
しかし、今度は
エラー52 ファイル名または番号が不正です
が、表示され デバックを開くと
Sub 実績一覧表作成(youshiki As ICreateYoushiki, ByVal Is被保険者 As Boolean)
Dim workers_ As Workers: Set workers_ = New Workers
workers_.targetCsvPath = GetTargetCsvPath
If workers_.targetCsvPath vbNullString Then
workers_.GetWorker Is被保険者
の 最終行が 黄色くなります。
私のファイルの作り方が悪いのかと
サンプルデータでやってみても 同じエラー表示となりました。
知識が乏しく申し訳ないのですが
原因は 他にあるのでしょうか・・。
DeskWorkKaizen says
たかたこさん。
サンプルデータでやっても同じエラーになってしまうのですね。
サンプルデータはどこに保存してありますか?
自分のPC内ではなく会社のサーバー上にあると、エラー52になる可能性があります。
もし会社サーバーに保存してあれば自分のPCに保存して再度試してみてください。
それでもだめなら試していただきたいことが一つあります。
1. AltキーとF11キーを同時押ししてプログラムが書かれた画面を表示してください
2. その画面の上の方のメニューの中にツール(T)がありますのでそれをクリックし
3. その中にオプション(O)がありますのでそれをクリックしてください
4. 全般タブの中にエラートラップという囲みがあります。その中の「クラスモジュールで中断」というところにチェックを入れてください
5. OK ボタンを押してください
6. 一覧表を作成ボタンを押してください
おそらく再びエラーになると思いますが、黄色くなる行が変わると思います。
どこで黄色くなっているか教えていただけると解決のヒントになるかもしれません。
その他の原因として考えられるのは、
– お使いのパソコンの権限が管理者権限ではない
– フォルダ構成、ユーザー名に記号が入っている
などの理由が考えられます。
この二つが原因であった場合別の方法で一覧表を作れるようにしてみます。
お手数をおかけして申し訳ありませんが上記ご確認よろしくお願いいたします。
たかたこ says
Deskwork KAIZEN様
出来ました!
MSのonedriveに同期されていましたので
それを外して動かしたところ
無事に作成出来ました。
これ以上ご迷惑をおかけしても と
数カ月分数百人データを打つのを半分覚悟しましたが
サーバーとお伺いして、もしや! と試してみたところ
一瞬で 作成され 無事に申請書が出来上がりました。
本当に 本当にっ ありがとうございました。
深く感謝申し上げます。
DeskWorkKaizen says
うまくいったようで何よりです。
数ヶ月・数百人分のデータをあのエクセルに手入力すると考えただけでゾッとしますね。
onedriveに同期されているとうまくいかないこともあるのですね。私も勉強になりました。
なにかありましたらまたよろしくお願いします
P太郎 says
雇用調整助成金用の実績一覧表(様式9)の自動作成プログラムを利用させて頂き、毎月100人超の入力作業に2時間かかっていたのが、数秒で作成できるため、大変助かっております。
今回、被保険者用の実績一覧表(様式9)の様式一部改訂・・・・押印廃止他により、「実行時エラー1004 変更しようとしているセルまたはグラフは保護されているため 読み取り専用となっています。」が出て、デバッグするとSub 実績一覧表作成(youshiki As ICreateYoushiki, ByVal Is被保険者 As Boolean)の「 youshiki.一覧作成 c, workers_ 」が黄色塗りで表示されます。
様式変更が原因とは思われますが、対応頂くことは可能でしょうか?
大変勝手なお願いではございますが、何卒よろしくお願いいたします。
DeskWorkKaizen says
ちょっと確認してみますので、少々お待ちくださいませ。
今週中をめどに対応したいと思います。
DeskWorkKaizen says
お待たせいたしました。
新様式に対応しましたので、ご確認くださいませ。
エラー等ありましたら遠慮なく教えていただければ幸いです。
P太郎 says
被保険者用の実績一覧表(様式9)の様式一部改訂に早速対応頂き、ありがとうございました。過去データで新書式で試してみましたが、バッチリうまくいきました。本当に助かります!今後とも宜しくお願い致します。
DeskWorkKaizen says
うまく行ったようでなによりです。
またよろしくお願いいたします。
P太郎 says
雇用調整助成金用の実績一覧表(様式9)の自動作成プログラムではお世話になっており、毎月助かっています。
5月中旬、被保険者用の実績一覧表(様式9)の様式一部改訂・・・・セル結合の微修正・・・・がありました。
新書式エクセル名も「000639678.xlsx 」から「000782344.xlsx」に改名となりました。早速、過去データで実績一覧表作成しましたが、問題なく作成出来ました。ご報告までと思いまして投稿いたします。
今後とも宜しくお願い致します。
DeskWorkKaizen says
教えていただきありがとうございます。
今見たら000782399.xlsxが最新になっているようですね。
試しましたが問題なさそうです。
今後なにか問題が生じたらまた教えて下さいませ。