不統一Excel、手作業集計の悪夢
毎月末の夕方が近づくと、私の憂鬱な日々が幕を開けておりました。全国に散らばる7つの営業拠点からは、月間の実績報告をまとめたExcelファイルがメールで次々と送られてくるのです。

私に課せられたミッションは、これらを一つの巨大なマスターシートにまとめ上げることでした。最初は単なるコピーアンドペーストの単純作業だと思っていました。しかし、その認識は致命的に甘いものでした。
まず、各拠点の担当者は、それぞれ独自の解釈で勝手にExcelのフォーマットを改造してこられました。彼らに悪気はありません。ただ、自分の入力しやすいように最適化しているだけなのです。しかし、それが集計側にとってどれほどの悲劇を生むか。当時の私は想像もできておりませんでした。
呪われたデータ解読作業
拠点Aは良かれと思って行を追加し、レイアウトを完全に破壊していました。拠点Bはなぜか売上金額を全角数字で入力してこられます。拠点Cに至っては、シート名すら毎月違う名前に変えられていました。集計用のVLOOKUP関数が悲鳴を上げました。「#N/A」の文字が画面いっぱいに増殖したのです。そのとき、マウスを握る手にじっとりと汗をかきました。胃の奥が鉛のように重くなるのを感じたものです。
送られてきたデータはそのままでは絶対に集計できません。そのため、本社の人間が一つひとつ目視で確認する必要がありました。全角半角を揃え、余計な空白を削除しなければなりません。マクロが読み込める形に整形し直す必要がありました。データ集計というより、もはや呪われた古文書の解読作業に近い状態でした。
この不毛な解読作業だけで、毎月丸2日の時間が容赦なく溶けていきます。本来やるべき経理処理や総務の定例業務は完全にストップしました。そのため、必然的に深夜残業が確定します。静まり返ったオフィスで、カタカタと虚しくキーボードの音が響きました。手作業による気合と根性の運用は、とうの昔に限界を超えておりました。
予算ゼロからのデータベース模索
これ以上の属人的な作業は無理だと感じました。集計作業が完全に崩壊している現状をレポートにまとめました。残業時間の推移も報告しました。そして、全社的なデータ共有システムの導入を上司に直訴いたしました。
しかし、返ってきた言葉は非情なものでした。
「システム開発を外注する予算なんて、うちの部署には1円もないよ」

会社の業績が厳しいわけではありませんでした。大規模な顧客管理システムの刷新に全予算が投下されていました。そのため、バックオフィスの業務改善に回す資金が存在しないとのことでした。さらに悪いことに、社内のIT部門もその大型プロジェクトで忙しく、一介の管理部門の業務効率化など見向きもしてくれません。見事なまでに孤立無援の状況に陥ってしまったのです。
システム会社にこっそり相談しました。提示された最低開発費用の概算は百万円単位でした。
外注もできず、社内のエンジニアも助けてくれません。それでも毎月の月末地獄は確実にやってくるのです。
データベースとの出会い、予算と知識の壁
何とかして「全員が同じ画面にデータを入力し、それが自動で一つの場所に貯まる仕組み」を作らなければなりませんでした。自分が過労で倒れてしまうと思いました。必死にネットの海を彷徨い、「Excel 共有 同時入力」「手作業 やめたい」と検索窓に打ち込み続けました。
そこで「データベース」という言葉にたどり着いたのです。
データを一箇所で集中管理し、複数人が同時にアクセスして情報を読み書きする仕組み。まさに私が求めていたものでした。しかし、それをどうやってこの予算ゼロの環境で実現すればいいのでしょうか。Linuxサーバーを立てる知識もありません。専用のミドルウェアを買う決裁も下りません。目の前にあるのは、支給された平凡なWindowsパソコンだけでした。
Officeのみで構築、手作り野良DB
本格的なSQLデータベースなど夢のまた夢です。手元にある武器は、全社員のパソコンに標準インストールされているMicrosoft Officeだけでした。
追い詰められた脳裏に、一つの歪なアイデアが閃きました。
社内の誰もがアクセスできる共有ファイルサーバーの奥底に、Accessのデータベースファイル(MDB)をこっそり置きました。そして、各拠点の担当者には、見慣れたExcelを入力画面として配るというものです。
Excelを入力フォームに

ユーザーがExcelの入力ボタンを押すと、裏側でこっそりファイルサーバーのAccessにデータが飛んでいく仕組みです。
これなら、担当者は普段通りExcelのセルに文字を打ち込むだけで済みます。新しいWebシステムの操作マニュアルを作る必要もありません。忙しい拠点担当者に一から使い方を覚えさせる手間も省けると思いました。
まず、Excelをただの「入力フォーム(フロントエンド)」として使いました。データの保存先である「データベース(バックエンド)」はAccessに分離したのです。専門用語で言えば、クライアント・サーバーモデルの模倣といえるでしょう。
窮地が生んだ野良DB
まさに素人がひねり出した「野良DB」の構想でした。システム部門の人間が見たら、セキュリティや保守性の観点から卒倒しそうな設計です。しかし、背に腹は代えられません。誰も助けてくれないなら、自分の手で仕組みを構築するしかなかったのです。
VBA・Pythonをもっと本格的に学ぶなら
VBAやPythonを実務レベルまで引き上げたい方には「侍エンジニア」がおすすめです。マンツーマン指導・オーダーメイドカリキュラムで、文系出身でも挫折しにくい環境が整っています。無料カウンセリングだけでも学習ロードマップが明確になります。
ADO接続地獄からの生還、非エンジニアのVBA
構想は完璧に思えましたが、それを実現するための壁は絶望的に高いものでした。
ExcelからAccessのデータベースにアクセスするためには、VBAを使って「ADO接続(ActiveX Data Objects)」という技術を操る必要がありました。非エンジニアにとって、それは完全に未知の領域です。マクロの記録機能でセルをコピペした経験しかありません。外部ファイルとの通信処理は、私には難易度が高すぎたのです。

プロバイダ、データソース、レコードセットなど、聞いたこともない単語が並ぶコードでした。特に「ConnectionString」と呼ばれる接続文字列は、少しでも記述を間違えると一切動かなくなります。まるで凶悪な呪文のようでした。
ネットで拾ったサンプルコードを丸写ししました。実行ボタンを押した瞬間、「ユーザー定義型は定義されていません」という冷酷なエラーダイアログが出現したのです。参照設定という概念すら知りませんでした。コードの一文字一文字が自分を拒絶しているように感じました。目の前が真っ暗になったことを覚えております。
エラーまみれの休日、データ追加の喜び
エラーの原因が自分のタイピングミスなのか。Windowsの環境の違いなのか。それとも根本的な考え方が間違っているのか。それすら分かりませんでした。コードを一行実行するたびに、容赦ないエラーメッセージが画面の中央に居座りました。
「Provider=Microsoft.ACE.OLEDB.12.0;」という文字列を何度も打ち直しました。カンマとセミコロンの違いやシングルクォーテーションの抜けを探すだけでした。それで休日の午後が丸ごと潰れたのです。コーヒーの空き缶が散乱する机で、ついにレコードが1件Accessに無事追加されました。その瞬間、思わず「おっしゃ!」と大声を上げて立ち上がってしまいました。
意味も分からずコピペしたコードを、エラーメッセージだけを頼りに継ぎ接ぎしていく作業でした。データベースを開き、レコードを追加し、行を閉じる。プロのエンジニアが書くような美しいプログラムとは程遠い、泥臭い力技です。それでも、Excelから放たれたデータがファイルサーバー上のMDBに吸い込まれる仕組みは、少しずつ確実に形になっていったのです。
MDB共有の恐怖、覚悟のシステム稼働
技術的な壁を這うようにして越えました。単体でのデータ送信テストは無事に成功しました。各拠点に入力用のExcelファイルを配布する準備も整いました。しかし、本格的なリリースを翌日に控えた夜、猛烈な不安が押し寄せてきたのです。「もし、全国の7拠点がまったく同じタイミングで、一斉に送信ボタンを押したらどうなるのでしょうか?」 7拠点の担当者が月曜日の朝9時にシステムへ同時アクセスする確率はどれくらいでしょうか。一斉にアクセスがあったらどうなるのか。そのような不安が頭をよぎりました。

データベースの排他制御やトランザクション処理なんていう高度な知識は持ち合わせておりません。単にファイルサーバーの片隅に置かれたMDBファイルに、複数のExcelが同時に書き込みに行く構成なのですから。
もし書き込みのタイミングが完全に重なってファイルが破損したら、どうなるでしょうか。過去の全データが吹き飛んだら、どう責任を取ればいいのか。想像するだけで背筋が凍る思いでした。
野良DB稼働、震える決断
夜中のベッドの中で「Access 複数人 同時入力 壊れる」とスマホで検索し続けました。技術掲示板には「MDBの共有はすぐ壊れるから絶対にやめとけ」という過去の書き込みがありました。それを見て、心臓が早鐘のように鳴ったのです。翌朝、配布メールの送信ボタンを押すとき、マウスをクリックする指先が氷のように冷たかったのを今でも鮮明に覚えております。
逃げ出したかったのです。プロジェクトを白紙に戻し、今まで通りの手作業に戻りたかったというのが本音でした。
しかし、あの古文書を解読するような手動集計の地獄に戻ることはもっと恐ろしいことでした。不完全でもいい。壊れたらその時直せばいい。そう割り切りました。ファイルサーバーのバックアップだけは毎時間厳重に取るバッチ処理を仕込みました。そして、震える手で野良DBの稼働を社内に宣言いたしました。
手作りDB、勝利と地獄の蓋
テスト稼働の初日、私の抱いていた深い懸念をよそに、システムはあっけなく動いてくれました。
ファイルサーバーの奥底に潜むMDBファイルを開くと、綺麗なフォーマットに揃ったデータが次々と吸い込まれていきました。拠点Aからも拠点Bからも、データが届いたのです。全角数字もありません。勝手に挿入された空白行もありません。整然と並んだレコードが、そこにはあったのです。

手動で丸2日かかっていた地獄の集計作業が、ボタン一つで完了しました。魔法のような光景でした。私が書いた泥臭いVBAのコードが、会社の業務を確かに変えたのだと実感いたしました。
長年の肩の荷が下りたような安堵感と、自らの手で仕組みを作り上げた達成感がありました。胸の奥に熱いものが込み上げるのを感じました。予算ゼロ、孤立無援の非エンジニアが見よう見まねで構築した、野良DBのささやかな勝利でした。
予期せぬ問題と課題
しかし、現実は映画のハッピーエンドのようにはいきません。ITの基礎知識がない素人が作ったシステムです。これがこのまま平穏無事に何年も稼働し続けるほど、現実は甘くありません。蓄積し続けるデータの肥大化。共有フォルダ特有のネットワーク遅延。そして、開発者の想定を軽々と超えてくるユーザーのイレギュラーな操作。様々な問題が待ち受けていました。
地獄の幕開け
本当の地獄の蓋が開くのは、もう少し先の話なのです。無料プレゼントとして「Excel業務を自動化する前に確認するチェックリスト(PDF)」をご用意しました。自動化していい作業かどうか。VBAかPythonか。最初に避けるべき落とし穴。それらをまとめたものです。
実務でよく迷うポイントを1枚にまとめました。メールアドレスだけで受け取れます。
関連リンクとチェックリスト
¥980 ミニキット コピペで動かせる3スクリプト+自動化チェックリスト 最新ファイルの自動選択・部署名ゆれの正規化・CSV文字コード確認の3本セット。今週の作業を1つだけ楽にするための最小キットです。 著者はこうして解決の糸口を見つけた
ミニキットを見る(¥980)著者も同じ境遇から始まりました。独学でここまで自動化した道のりを参考にしてみてください。 VBAからPythonに移行したいが「何から始めればいいか」が一番難しかった話 エラーメッセージの「最後の一行だけ」をAIに投げると解決しない理由 このスキルを活かしてさらに前へ進むなら
関連書籍
Excel・VBA関連書籍を、手元で見返せる形にしておきたい場合
ExcelやVBAのトラブルは、基本の考え方をあとから見返せるだけでかなり楽になります。手元に1冊置いておくと、同じエラーで止まったときに確認しやすいです。
学習サービスとアンケート
Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

