会社が導入したRPAがまた使えなかったので、今度はPython+生成AIで自動化したら、前回ひと月近くかかったものが1日で片付いた話|勤怠データ集計・完全自動化の記録

エピソード9で書きました。会社のRPAが対応外だった話です。RaspberryPiとPythonを使い、自作しました。あれを完成させるまでには、ひと月近くかかりました。当時はまだ、生成AIという存在がありませんでした。ひたすらGoogle検索を繰り返す毎日でした。何度も壁にぶつかり、行き詰まったことを思い出します。今回の出発点も、以前と全く同じでした。やはり会社のRPAが使えないのです。けれど、手元には武器があります。あの時にはなかった、強力な武器です。それが今回の大きな助けとなりました。

BizRobo!自動化への挑戦、内外の壁

まず、我が社にはBizRobo!があります。正確には「ある」というだけの状態です。実際に使えるかどうかは、また別の話になります。毎月、決まった作業があります。勤怠管理クラウドからCSVをダウンロードします。それを集計します。会議用のフォーマットに整えて提出します。この繰り返しを、毎月手作業で行っていました。「これをBizRobo!で自動化できないか」と考えました。私にとっては、ごく自然な流れでした。

最初にDesign Studioを触ってみました。まずは操作を覚えました。設定を行って実行してみましたが、動きません。対象のシステムに対応していないそうです。またかと思い、肩を落としました。前回も同じような状況だったからです。

画面操作を阻むシステム側の壁

次に、画面の操作を細かく試みました。しかし、全くもうまくいきません。「セレクタの指定が甘いのか」と考えました。XPathを微調整してみました。それでもダメです。待機時間を延ばしてみたりもしました。どれだけ工夫を凝らしても、無駄でした。まるで透明な壁に阻まれているようです。RPAはピクリとも反応してくれませんでした。おそらく、システム側に原因があります。botからの操作を強力に弾いているのだと思います。

情シス非推奨、DAの希望潰える

「次こそはいけるかもしれない」と思いました。淡い期待を何度も抱きました。しかし、すべて打ち砕かれました。気づけば丸半日が経過していました。画面を睨み続けた末の結果です。「これはお手上げだ」と悟りました。その時の徒労感は、底知れないものでした。完全に心が折れてしまいました。

ただ、調べているうちに知ったことがあります。Desktop Automation(DA)という機能です。BizRobo!の中にある別の機能です。これなら、より幅広いシステムに対応できます。「これならいけるかもしれない」と考えました。そこで、情報システム部へ確認を取りました。

一方で、情シスからは宣告がありました。「DAは環境依存が激しい」とのことです。解像度などの違いですぐに止まります。運用が不安定になるから、と言われました。「悪いことは言いません。やめておいたほうがいい」と断られました。

解像度と運用の不安定さという宣告

Webブラウザからの操作が全滅しました。残された最後の一手がDAでした。画像認識やマウス操作の模倣なら突破できると信じていました。どんな強固なシステムも超えられるはずです。しかし、その矢先の出来事でした。情シスからの非情な宣告に、私は言葉を失いました。

情シスの壁、RPA絶望

RPAを拒む外部の壁に絶望していました。それは「システム」という壁です。しかし、さらなる壁がありました。社内の「情報システム部」という内部の壁です。そこでトドメを刺されるとは思いませんでした。唯一の突破口を完全に塞がれた気分でした。目の前が真っ暗になったような心地でした。

情報システム部の方々も、親切に調べてくださいました。しかし、結論は変わりませんでした。「DAは動作が不安定だから非推奨」とのことです。BizRobo!の導入費用がどれほどだったのかは存じ上げません。ですが、私自身の業務には関係のない話になってしまいました。期待していただけに、その反動は大きかったです。

毎月の不毛な勤怠集計作業

自動化したかった作業を整理します。手順は以下のようになります。

  1. 勤怠管理クラウドサービスにログインします。CSVの発行を依頼し、ダウンロードを行います。
  2. ダウンロードしたCSVを開きます。個人ごとの月次集計を算出します。総労働時間や時間外労働時間などです。
  3. 最新の人員表を参照します。人事部がファイルサーバーに置くデータです。所定のフォーマットに整形し、出力します。

毎月たった1時間の作業です。小さいといえば小さいかもしれません。ですが、毎月必ず発生する作業です。絶対に間違えてはいけない仕事は、精神を消耗させます。

月末に訪れる精神的な消耗

カレンダーの数字を見ます。月末に近づくたび、胃のあたりが重くなります。バラバラの形式で提出されたデータを整形します。VLOOKUPの参照範囲を、ちまちまと修正します。数式のズレを見つけては、溜息をつきます。合わない合計時間を探して、画面を睨みつけます。その時間は、まさに「無の境地」です。

「また今月も、この作業に1時間を溶かすのか」と思います。その思いが頭をよぎるたび、悲しくなります。自分のスキルの使いどころを、間違えている気がします。やるせない徒労感に襲われるのです。保存ボタンを押して、ようやく資料が完成します。しかし、達成感よりも先に別の思いが来ます。「来月もまたこれが来る」という予報です。それが静かに心を削っていくのです。

PythonとVBA、連携の壁と3日間の苦闘

RPAが使えないと決まりました。その時点で、方針は決まっていました。PythonとExcelVBAを使い、自作することです。前回と同じような構図になりました。役割の分担は以下のようにしました。Pythonがクラウドへログインします。CSVの発行依頼とダウンロードを担います。ExcelVBAがCSVを集計します。人員表を参照し、フォーマットを整えます。最後に出力するまでを担当させました。

個別に動かすのは、それほど難しくありませんでした。Pythonのブラウザ操作は、経験があります。VBAについても、これまで長く書いてきました。そのため、単体テストはすべて通過しました。

繋げる工程に潜む大きな課題

問題は、「繋げる」ところにありました。Pythonが書き出したCSVをVBAで読みます。人員表は、更新のたびに名前が変わります。日付が入ったセルを、読み取る必要があります。最新ファイルを自動で特定しなければなりません。処理の順序やファイルパスの受け渡しに苦労しました。日付判定のロジックも複雑です。一つ一つは解決できても、繋がりませんでした。すべてを繋げることができず、頭を抱えました。

VBA・Pythonをもっと本格的に学ぶなら

VBAやPythonを実務レベルまで引き上げたい方には「侍エンジニア」がおすすめです。マンツーマン指導・オーダーメイドカリキュラムで、文系出身でも挫折しにくい環境が整っています。無料カウンセリングだけでも学習ロードマップが明確になります。

侍エンジニア 無料カウンセリングを予約する →

マクロ開発3日間の深まる迷宮

期間にしておよそ3日間、格闘しました。1日目は「これはいける」と意気込みました。断片的なコードを繋ぎ合わせました。2日目は、マクロの停止に悩みました。特定の条件下で動かなくなります。ネットの掲示板を漁り、深夜まで微修正を繰り返しました。しかし、解決の糸口が見えません。3日目には、完全に迷宮入りしました。昨日まで動いていたはずの部分も動きません。頭の中は、スパゲッティコードのようでした。完全にぐちゃぐちゃな状態でした。

「結局、手でやった方が早いのではないか」と考えました。自分の中の悪魔が囁きます。一方で、ここまで費やした時間を無駄にしたくありません。その意地だけで踏みとどまりました。パズルの最後の数ピースが、どうしてもはまりません。もどかしく、孤独な戦いでした。

前回のひと月近くかかった苦労を思い出しました。あの時もそうでした。単体は動くのに、繋げるところで詰まっていました。今回も同じ轍を踏んでいるようでした。

GeminiによるVBA「背骨」生成、一日の劇的解決

今回、前回と違った点があります。それはGeminiの存在です。行き詰まっていたコードを貼ってみました。「CSVをVBAで処理したい」と伝えました。「人員表を日付で特定する必要がある」とも書きました。「全工程を繋いでほしい」と投げました。大まかな内容でしたが、相談してみました。返ってきたコードは、見事なものでした。自分では書けなかった部分を、見事に埋めてくれました。

ExtractDate関数が解いた日付の謎

特に助かったのがExtractDate関数です。人員表のセルには「4月8日」とあります。これを日付として扱う必要がありました。yyyy/mm/dd形式への変換です。自分では、なかなか思いつきません。正規表現は使いませんでした。InStrとMidを用いました。文字の位置を基準に分解する発想です。自分一人では辿り着けなかったでしょう。

この工夫により、霧が一瞬で晴れました。自分が書いたツギハギの命令文とは違います。洗練されたロジックでした。複雑なループや条件分岐が、整理されていました。3日間の迷走が、嘘のように感じられました。

コードの背骨、システムの躍動

「これだ。これなら全部が繋がる」。そう確信しました。バラバラだった個々の機能が、ようやく繋がりました。このコードという「背骨」を通しました。すると、一つのシステムとして動き出しました。ネット上の断片的な情報では無理でした。対話の中から「正解」が現れた瞬間でした。結局、たった1日で繋がりました。

勤怠管理自動化の仕組み

最終的な構成は以下の通りとなりました。

  1. Pythonがクラウドサービスにアクセスします。CSVの発行依頼から、ダウンロードまでを行います。
  2. ExcelVBAが起動します。指定フォルダから最新のCSVを自動で探します。
  3. 人員表Excelをチェックします。N1セルの日付から、最新ファイルを特定します。
  4. CSVデータを集計します。人員表とデータを突き合わせます。
  5. 会議用フォーマットのExcelに整形し、出力します。

実行は1クリックで済みます。完了まで、わずか3分です。さらに、自動特定ロジックが気に入っています。毎月ファイル名が変わるものです。ですが、こちらは何もしなくていいのです。「前月25日以降に更新されたもの」という条件です。フォルダを走査して日付を読み取ります。自動で最新を選んでくれるようになりました。

生成AIが解いたRPAの「繋ぎ目」

エピソード9のことを思い出します。当時はXPathで3日かかりました。メール本文のURL抽出にも何日も費やしました。全体でひと月近くかかりました。それは生成AIがない時代の記録です。

今回も、繋ぎ込みだけで3日間悩みました。個々の処理は動く状態でした。しかし、全工程が繋がりませんでした。前回と同じ壁にぶつかっていました。しかしGeminiに相談してからは、劇的でした。たった1日で解決したのです。

一瞬で終わる作業と感動

違いはGeminiに聞けたことだけです。それだけで、結果が大きく変わりました。震える指先で、実行ボタンをクリックしました。数秒後、セルが生き物のように動き出しました。一瞬で資料が組み上がりました。時計の針は、まだ3分も進んでいません。かつては1時間を費やしていました。神経を磨り減らしていた作業です。それが、嘘のように終わってしまいました。

AIが紡ぐフロー、時間短縮の歓び

喉の奥から、歓喜が込み上げました。単なる効率化の喜びではありません。3日間の迷走を乗り越えた結果です。エラーとの格闘に勝った瞬間です。自分自身への疑念を、すべて跳ね返した証明です。1時間という重苦しい「義務」が消えました。わずか3分の「結果」に変わったのです。視界がパッと開けました。開放感に包まれました。奪われていた自分の時間が、戻ってきました。ようやく手元に返ってきたのだと、強く実感できました。

繋ぎ目を解決するAIの力

最近、感じていることがあります。生成AIは「繋ぎ目」に強いということです。単体を作ることは、自分でもできます。調べれば、コードは書けるからです。しかし、本当に効くのは「繋ぎの部分」です。AとBは動くけれど、渡し方が分からない。そこに「全工程を繋いで」と投げます。すると、自分にはない発想が返ってきます。前回ひと月かかった理由も分かりました。そこをすべて自分一人でやっていたからなのですね。

関連リンクとチェックリスト

無料プレゼント

Excel業務を自動化する前に確認するチェックリスト(PDF)

自動化していい作業かどうか確認しましょう。VBAかPythonか、判断基準をまとめました。避けるべき落とし穴も記載しています。実務のポイントを1枚にまとめました。メールアドレスだけで受け取れます。

無料でチェックリストを受け取る

¥980 ミニキット

コピペで動かせる3スクリプト+自動化チェックリスト

最新ファイルの自動選択を行うコードです。部署名ゆれの正規化も含まれます。CSV文字コード確認もセットにしました。今週の作業を楽にするためのキットです。

ミニキットを見る(¥980)

関連する学びを少し広げるなら

PythonやExcelまわりの自動化をもう少し体系的に学びたい方には、実務向けの技術書で土台を固める方法もあります。

Python業務自動化関連書籍(Amazon) →

学習サービスとアンケート

このスキルを活かしてさらに前へ進むなら

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →

[アンケート] この記事は役に立ちましたか?

30秒で答えられます。改善の参考にします。

1問だけ回答する