VBAによる業務改善(サービス状況報告書) とその運用管理

Excel

訪問介護においては、サービス提供事業者がモニタリングを行った結果として月1回、ケアマネ(居宅介護支援事業所)に「サービス提供票」を集約した資料と共に、報告書(「サービス状況報告書)を提出します。「サービス状況報告書」は、利用者毎に1ヶ月1枚のA4のエクセルシートに記載して月1回、印刷したシートをケアマネ(居宅介護支援事業所)に郵送またはFAXしています。この事務作業の負荷が大きいとのことから、効率化を図るべく「サービス状況報告書」のフォームの改訂からその管理方法まで、VBAを活用して改善を試みましたので、公開します。

スポンサーリンク

課題点

  • 前月の「サービス状況報告書」のデータとして記録が残っていない為、紙で保管されている報告書を捜さないといけない。
  • 「サービス状況報告書」は、上書きしている為、消さないといけない内容がそのまま間違えて残っていることがある。
  • 利用者毎の「サービス状況報告書」は、ページとしてフォーマットされているので、多くの利用者をもつ居宅介護支援事業所の場合、報告書をスクロールして探すのが面倒である。
  • 新しい利用者が増えた場合、ページのフォーマットに追加しなければならない為、そのフォーマット作成に時間がかかる。

<改善前の管理方法>

改善策

課題点で、最大の課題は、上書き保存している為、過去のサービス状況報告書のデータが残っていないことです。これを改善する為には、利用者毎にサービス状況報告書の内容を月毎に記録として残せなければなりません。そこで、以下のような対策を実行しました。

「サービス状況報告書」の改訂

旧フォームは以下の通り、満足度等の選択を、□と■で入力するようになっていたので、これをフォームコントロールのオプションボタンで選択できるようにしました。

「サービス状況報告書」の管理方法

過去のサービス状況報告書の内容をデータとして残すため、以下のような管理方法としました。

<改善後の管理方法>

サービス状況報告書の印刷の改善

居宅介護支援事業所毎にサービス状況報告書をまとめて連続して印刷するために「印刷マクロ」を作成しました。
<機能>
居宅介護支援事業所フォルダに格納されている利用者ブック(ファイル)を次々と読み込み、画面から指定されたシート名と一致するシートのみを印刷します。
例:
画面からシート名に20190131と入力すると、「ケアプランセンター幸」フォルダに格納されている゛サービス状況報告書_01江田 幸代.xlsを開き、20190131と一致するシートがあれば印刷します。シートがなくなれば次のサービス状況報告書_小川 靖子.xlsを開き、同様に一致するシートを印刷します。フォルダに格納されている最後のブックまで繰り返し処理します。
※<改善後の管理方法>の図を参照して下さい。

注意:
これまで居介護支援事業所が1シートとなり、シートの中のページで利用者毎のサービス状況報告書が配置されていましたので、そのまま当該シートを印刷すれば、居宅介護支援事業所(ケアマネ)毎にまとめて印刷することができていました。

サービス状況報告書を残す。

利用者毎にブックを作成して、シートに毎月のサービス状況報告書を記載することで、記録として残せるようにしました。(上書きせずに、別シートを作成)そこで、簡単に別シートを作成できるように「シートの追加」マクロを作成しました。
<機能>
利用者のブックの表紙にある「シート追加マクロ」の「実行」ボタンをクリックすることで、新しいサービス状況報告書のシートが追加されます。「サービス項目」,「ご利用者様の状況」等、毎月変更のある項目をクリアして、シートを作成していますので、すぐに状況の入力が可能となります。

ブックとシートの構成

サービス状況報告書

サービス状況報告書は、月1回、居宅介護支援事業所(ケアマネ)ヘ「サービス提供票」を集約した資料と共に、郵送やFAXで提供しています。従って、居宅介護支援事業者のフォルダの中に担当する利用者のブックを格納しています。

ブック

サービス状況報告書2018_03小野 小町.xls

シート

1つの利用者のブックは、年月日のシートで構成されています。

※毎月、上記A,B,C欄を記入する為、シートを追加します。

注意:
これまでは、1シートを居宅介護支援事業所として、利用者はそのシートの中のページとしてフォーマットされていましたので、過去のサービス状況報告書は上書きされて残っていませんでした。
何故なら、居宅介護支援事業所をシートとして、その中に利用者毎のサービス状況報告書をページとして保管することで、居宅介護支援事業所毎に、報告書を連続して印刷できるからです。

フォルダの構成

注意:
ブック名は、自由に設定して構いませんが、氏名の頭にアイウエオ順の番号を付しています。アイウエオ番号がないと、印刷した場合に漢字の内部コード順で印刷されて整理がつかない為です。よって、フォルダーの中に複数のブックがない場合や少ない場合は、特にアイウエオ番号を付与する必要はありません。

VBAで自動化

シートの追加

目的

これまで、今月のサービス状況報告書を作成するために、前月分の内容を消して上書きしていた為、記録が残らなかったのを、記録として残すこととする。

方法

シート名を毎月の日付(末日)として、提出済みのサービス状況報告書も残すこととした。シート追加マクロを作成して、「実行」をクリックすることで自動で翌月のシートを追加できるようにしました。
※excelブックの先頭の「表紙」というシートでマクロを作成しましたので、「実行」をクリックすると、シートが追加されます。

結果

シートの印刷

目的

月1回、居宅介護支援事業所(ケアマネ)へサービス状況報告書を提供するため、当該事業所が担当する利用者のサービス状況報告書のみ(指定する年月)をまとめて連続印刷します。これまで、過去の報告書は上書きの為、残すことはできなかったが、シートの中のページとして利用者のサービス状況報告書を保管していた為、当該シートを何ページにも渡って印刷することは簡単でした。が、今回は記録として過去のサービス状況報告書を残すため、利用者を1ブック(ファイル)として保管する為、居宅介護支援事業所の担当する利用者のサービス状況報告書をまとめて連続して印刷する為には、指定された日付で、複数のブックを読み込み、一致するシートのみを印刷しなければなりません。

方法

実行マクロ.xlsmを作成して、各事業所フォルダに格納した。
印刷対象シート名を入力して、「実行」をクリックします。

ご注意:
印刷が終了して、「実行マクロ.xlsm」を閉じようとすると、以下のように「”実行マクロ.xlsm”の変更内容を保存しますか?」と表示されますので、「保存」をクリックして下さい。これは、入力した印刷対象シート名を保存するか?否か?ですので、「保存」願います。

結果

利用者の追加

新たに「与謝野晶子さん」が利用者として追加になった場合は、雛形のブックを用意していますので、「サービス状況報告書_雛形.xls」をコピーして作成します。

「サービス状況報告書_雛形.xls」を開く

「名前を付けて保存」を選択

保存先の選択

与謝野晶子さんの担当ケアマネが「ケアチームりく」に所属している為、保存先を「ケアチームりく」とします。

ファイル名の変更

ファイル名を与謝野晶子さんに変更して「保存」をクリックします。

サービス状況報告書の追加

「サービス状況報告書_与謝野晶子.xlsが保存されると、シートが表示されますので、そのまま、内容を「与謝野晶子」さん向けに変更します。

シート名の変更

雛形のシート名がそのままコピーされていますので、適切なシート名に変更します。例えば、与謝野晶子さんのサービス状況報告書は、2月度よりケアマネに報告するとすれば、シート名は、20190228と変更しなければなりません。
※シート名はyyyymmdd固定で、ddは該当月の末日となります。

記入日の変更

シート名を変更した場合は、記入日も合わせて変更して下さい。
※入力の仕方は、yyyy/mm/ddです。

サービス提供月の変更

シート名を変更した場合は、サービス提供月も合わせて変更して下さい。

利用者名の入力

居宅支援事業所の入力

サービス提供責任者の変更

長期目標、短期目標の変更

雛形として設定された目標を、実際の利用者の目標に変更します。

シートの保存

以上で、与謝野晶子さんのサービス状況報告書を記入する準備が完了しましたので、「保存」をクリックしてブックを閉じます。

居宅介護支援事業所の追加

これまで登録のない居宅介護支援事業所(ケアマネージャー)が発生したは、当該フォルダーを作成します。
注意:
作成したフォルダの中に、実行マクロ.xlsmをコピーして格納して下さい。このファイルを格納しなければ、「サービス状況報告書」の印刷ができなくなります。

例:「ケアプランセンター春の風」が発生した。
・「ケアプランセンター春の風」のフォルダーを作成します。

・フォルダーの中に、「実行マクロ.xlsm」をコピーして格納します。

VBAマクロの作成

シート追加マクロ

マクロの実行

各利用者ブックを開いて、表紙にある「実行」ボタンをクリックすると、以下のようにシートが追加されます。

マクロの作成

シート名が暦日の末日となっている為、コピー元となる最新のシート名を取得して、1ヶ月後の末日で新しいシートを追加します。
但し、既に次の月のシートが存在していたら、メッセージを表示してシートを追加しません。

<説明>
①シート名の取得

左端から2番目のシート名を取得します。つまり、゛表紙゛の次のシート名

②文字列から日付(Date型)への変換

= CDate(Format(wsname1, “####/##/##”))
※8文字の数字で日付としてみなされる形になっている場合は、そのままではDate型には変換できません。そのため、文字列の年・月・日の各部分を分けてスラッシュ等で区切り、yyyy/mm/dd形式の文字列にした上でCDate関数で変換する必要があります。

③1ヶ月後の月の末日を算出

シートを追加する際のシート名として、1ヶ月後の月の末日を算出します。

④本日の日付と比較

⑤シートの追加

日付(Date型)から文字列への変換

表紙の次のシート名(この例では、20181231)で、その直前(before)にシートをコピーします。

⑥シート名の書き換え

日付(Date型)から文字列への変換
1ヶ月後の月の末日を求めたwsdt2をシート名とする為、文字列に変換します。

シート名を書き換えます。
コピーしたシート名をwsname3に書き換えます。

⑦追加したシートの項目クリア

  • 記入日をwsname3で書き換えます。
  • サービス提供月の年(“G13”)を書き換えます。
  • サービス提供月の年(“E14”)を書き換えます。
  • サービス項目、具体的サービス内容・実施方法等、留意点欄をクリアします。
  • ご利用者様の状況欄をクリアします。

シートの印刷マクロ

マクロの実行

各居宅介護支援事業所のフォルダに格納してある「実行マクロ.xlsm」を開き、印刷対象シート名を入力して、「実行」をクリックすると、入力されたシート名と一致するサービス状況報告書を連続して印刷します。

マクロの作成(xlsのみ)

居宅介護支援事業所フォルダに格納されている利用者ブック(ファイル)を次々と読み込み、画面から指定されたシート名と一致するシートのみを印刷します。
例:
画面からシート名に20190131と入力すると、「ケアプランセンター幸」フォルダに格納されている゛サービス状況報告書_01江田 幸代.xlsを開き、20190131と一致するシートがあれば印刷します。シートがなくなれば次のサービス状況報告書_小川 靖子.xlsを開き、同様に一致するシートを印刷します。フォルダに格納されている最後のブックまで繰り返し処理します。

<説明>
①初期化

②ブックの取得

Dir関数は引数に指定したファイルが存在したとき、そのファイル名を返す関数です。引数にはワイルドカードを指定できますが、3文字の拡張子を指定した場合、その3文字「で始まる」拡張子が該当すると判断され、「xls」と「xlsx」「xlsm」も該当となってしまいます。そこで、以下のように、xls以外は読み飛ばすようにしています。

③シートの取得

④シートの印刷

マクロの作成(実行マクロ.xlsm以外)

マクロの作成(xlsのみ)では、「サービス状況報告書_利用者名.xls」ブックだけを読み込んでいましたがxlsxが主となっている以上、マクロを設定したブックはxlsmとして作成せざるを得なくなります。(マクロの実行ボタンで、シートを追加の場合はxlsで追加されますので良いのですが、外部で作成したシートを直接追加された場合は、xlsmのシートが発生します。)
そこでズバリ、「実行マクロ.xlsm」のみ読み飛ばし、その他のxlsx及びxlsmを読み込むマクロを作成しました。
2019.01.29「実行マクロ.xlsm」は、こちらに置き換えました。

コメント

  1. 平岡 昭一 より:

    訪問介護事業所でサービス提供責任者しています。毎月の報告書の管理で悩んでいてもっとスムーズにできないものかと悩んでいます。
     サイトを拝見させていただき、自分には無理かもしれませんが勉強させてもらいたいので、VBAの見本みたいのがありましたら頂戴したいのですが。
     無理だったら構いませんので宜しくおねがいします。

タイトルとURLをコピーしました