はじめに
Excelマクロ(VBA)やGASの外注を考えるきっかけは、多くの場合「作った人がいなくなって、誰も直せない」ではないでしょうか。今回ご紹介するのも、まさにそのご相談から始まった事例です。
ご相談いただいたのは、複数の取引先に商品を販売している会社です。見積書はExcelとマクロで作っていましたが、マクロを直せる人が社内にいません。価格が変わるたびに「どこを触れば壊れないのか」が分からず、不安を抱えながら使い続けていました。
そこで私たちは、マクロを新しく作り直すのではなく、見積の作成をシステムに移すことをご提案しました。価格表はこれまでどおりExcelで管理し、画面から取り込むだけで見積に反映されます。
その結果、見積1件あたりの作成時間は約30分から約10分に短縮できる見込みです。取引先に渡すファイルも、相手に合わせた単価だけが入った状態で自動で作られるため、社外秘の価格を誤って渡す心配もなくなります。
本記事では、Excelマクロの属人化をどう解消したのか、外注する前に知っておきたい「マクロで続けるか、システム化するか」の見極め方もあわせてご紹介します。
※数値は想定値です。
Excelマクロで見積を作っていた頃の課題
マクロを直せる人が社内にいない
見積用のExcelには、価格を引いてきて明細を組み立てたり、見積書を印刷用に整えたりするマクロが入っていました。毎日の業務を支える大事な仕組みですが、中身を理解している人は社内にいません。取引先が増えたり、商品の価格が変わったりするたびに「このシートを触って大丈夫か」と手探りで直す状態でした。典型的なExcelマクロの属人化です。
商品の組み合わせごとにシートが増え続ける
扱う商品は組み合わせが多く、見積のExcelは組み合わせごとにシートを分けていました。その数は数十枚にのぼります。新しい商品が出るたびにシートをコピーして増やすため、どれが最新なのか、どのシートを直せばよいのかが分かりにくくなっていました。
そのままでは取引先に渡せないファイル
このExcelには、仕入値から取引先ごとの販売価格まで、すべての価格が1つのファイルに入っていました。社内で計算するには便利ですが、取引先に渡す見積は、相手に見せてよい単価だけに絞った清書版を別に作る必要があります。手作業で清書するため手間がかかり、万が一ファイルを取り違えれば、社外秘の価格や利益が外に出てしまいます。
Excelをやめるわけにもいかない
一方で、価格表の管理は長年Excelで回ってきた業務です。担当者は慣れた手順で価格を更新しており、「全部システムに置き換える」となれば、現場の負担は小さくありません。属人化は解消したい、でもExcelでの運用はできるだけ残したい。この両立が今回の大きなテーマでした。
見積をシステム化し、Excelは「価格表の原本」として残す

今回の仕組みは、ひとことで言えば「見積はシステムで作り、価格表はExcelのまま」です。
価格表はExcelで更新して、画面から取り込む
価格の更新は、これまでどおり担当者がExcelで行います。更新したExcelファイルをシステムの画面からアップロードすると、取引先ごとの価格や商品の情報がまとめて反映されます。
Excelを「価格表の原本」として残したので、価格を更新する手順はほとんど変わりません。システムの画面では、Excelから取り込んだ内容を確認するだけにして、二重管理にならないようにしました。
見積はシステムで作り、宛先に合わせて出力する
見積の作成はシステムで行います。商品を選ぶと、取り込んだ価格表から単価が自動で入ります。数十枚のシートに分かれていた組み合わせは、システムの中で1つの見積画面にまとまりました。
見積書は、渡す取引先を選んでExcelやPDFで出力します。出力されるのは、選んだ取引先の単価だけが入った清書版です。仕入値や利益の入った元のファイルを渡すことはもうありません。
見積書の見た目は、これまで使っていたExcelの見積書とまったく同じです。既存の見積書から1ページ目だけを切り出してひな形にしたので、受け取る取引先から見ても違和感がありません。
さらに、出力したExcelの金額欄は数字ではなく計算式のまま入れています。取引先が受け取ったあとに数量を変えても、合計や消費税が自動で計算し直されます。
導入前と導入後の比較
| 項目 | 導入前(Excelマクロ) | 導入後(システム化) |
|---|---|---|
| 見積の作成 | 数十枚のシートから該当シートを探して入力 | 1つの画面で商品を選ぶだけ |
| 価格の更新 | Excelを更新し、マクロが壊れないか手探り | Excelを更新して画面から取り込む |
| 取引先に渡すファイル | 手作業で清書版を作成 | 宛先ごとの清書版を自動で出力 |
| 社外秘の価格 | ファイル取り違えのリスクあり | 宛先の単価しか出力されない |
| 仕組みの保守 | マクロを直せる人がいない | 仕様を文書に残し、中身を誰でも確認できる |
| 見積1件の作成時間 | 約30分 | 約10分 |
※数値は想定値です。
技術面では、広く実績のあるWebの技術で開発しています。Excelファイルの読み込みと書き出しも、多くのシステムで使われている信頼性の高い仕組みを使いました。今後、発注書や請求書といった帳票を増やしたいときにも、同じ考え方で広げられる構成にしています。
開発で手間をかけたこと
マクロを全部読み解く前に、計算ルールを整理した
Excelマクロのシステム化というと「まずマクロの中身を全部読み解く」と思われがちです。しかし、マクロの解読には時間がかかり、その分の費用はお客様の負担になります。
そこで今回は、先にシートの計算式を一つひとつ洗い出し、見積の計算ルールを文書にまとめました。その結果、見積の計算はシートの計算式でほぼ説明できることが分かりました。マクロが担っていたのは主に「価格を引いてくる」「印刷用に整える」といった作業で、これはシステム側で作り直せます。マクロの解読は本当に必要になった時点で行うと決め、開発の手間を抑えました。
合わない行は推測せず、一覧で知らせる
Excelから価格表を取り込むとき、取引先の名前の表記が少し違う行が出てきます。システムが「たぶんこの取引先だろう」と推測して当てはめると、別の取引先に違う価格が付いてしまうおそれがあります。
そこで、名前がぴったり合った行だけを取り込み、合わなかった行は取込結果の画面に一覧で表示するようにしました。担当者はその一覧を見てExcelを直し、もう一度取り込むだけです。間違った価格で見積が作られるより、取り込めなかった行が目に見える方が安全だと考えました。
途中で止まっても、価格表が中途半端にならない
取り込みの最初に、必要なシートや見出しがそろっているかを確認します。形式が合わなければ、その場でエラーを表示して何も変更しません。
反映は、すべて成功したときだけ確定する作りにしました。万が一途中で問題が起きても、価格表の半分だけが新しくなるような状態にはなりません。「取り込んだら見積が作れなくなった」という事態を防ぐことを最優先にしました。取り込みの結果は直近3回分を残しているので、いつ、何が反映されたかも後から確認できます。
現場とお客様のための工夫
マクロと同じファイル名の付け方を引き継いだ
マクロには、見積書を保存するときに「お客様の名前と商品の内容」を組み合わせてファイル名を付ける機能がありました。現場の皆さんは、この名前で案件フォルダを整理しています。
そこで、システムで出力する見積書やメールに添付する帳票にも、マクロとまったく同じ付け方でファイル名を付けるようにしました。新しいシステムになっても、フォルダの整理の仕方を変える必要はありません。小さなことですが、毎日使う人にとっては大きな違いです。
今のExcelを壊さない
価格表のExcelには、今も行を追加するためのマクロが入っています。取り込みのためにExcelの形を大きく変えると、このマクロが動かなくなるおそれがありました。
そこで、Excelに足す項目は最小限の1列だけにとどめ、取り込み側は列の位置ではなく見出しの名前で項目を探すようにしました。担当者が列の順番を入れ替えても、取り込みはそのまま動きます。
仕様を文書に残し、属人化を繰り返さない
マクロが属人化した一番の原因は、「なぜそう作ったのか」がどこにも残っていなかったことです。今回は、計算ルールや取り込みのルール、判断の理由をすべて仕様書に残しています。担当者が変わっても、仕組みの中身を説明できる状態にしました。
Excelマクロ・GASで続けるか、システム化するかの見極め
ここまでシステム化の事例をご紹介しましたが、すべてのExcel業務をシステムにすべきだとは考えていません。マクロやGASで十分な業務もあります。
| こんな業務なら | おすすめ |
|---|---|
| 1人〜少人数で使う、決まった手順の作業 | Excelマクロ(VBA)・GAS |
| メールやスプレッドシートへの転記など、単純な自動化 | GAS |
| 複数人が同時に使う、取引先に書類を出す | システム化 |
| 価格・顧客など、間違えると影響が大きい情報を扱う | システム化 |
実際に私たちも、別の案件ではGASを使っています。外部から届く通知メールをGASでスプレッドシートに集め、それをシステムが読み取って取り込む仕組みです。メールを集めるだけの単純な作業はGASに任せ、内容の判定のような大事な処理はシステムで行う。役割を分けることで、GAS側を小さく保っています。
大切なのは、マクロでもGASでもシステムでも「中身を説明できる形で残す」ことです。外注するときは、作ってもらうだけでなく、仕様や判断の理由を文書で残してもらえるかを確認しておくと、同じ属人化を繰り返さずに済みます。
まとめ
Excelマクロの属人化は、多くの会社が抱える悩みです。今回の事例では、マクロを作り直すのではなく、見積をシステムに移し、価格表はExcelのまま残すことで、現場のやり方を大きく変えずに属人化を解消しました。
「マクロを直してほしいけれど、システム化すべきか分からない」「今のExcelを活かしたまま楽にしたい」。そんな段階でもかまいません。マクロのまま直すか、GASを使うか、システム化するか。業務の内容をうかがったうえで、無理のない方法を一緒に考えます。まずはお気軽にご相談ください。
よくある質問
Q. 今のマクロの中身が分からなくても相談できますか?
はい、できます。今回の事例でも、まずExcelのシートと計算式を洗い出すところから始めました。マクロを作った方がいなくても、実際のファイルと普段の使い方をうかがえば、業務の流れを整理できます。
Q. システム化したら、Excelは使えなくなりますか?
いいえ。今回の事例のように、価格表などはExcelで管理を続け、システムに取り込む形にできます。出力する帳票もExcelで受け取れます。慣れたExcelでの運用をどこまで残すかは、ご相談しながら決めます。
Q. GASやマクロだけの小さな自動化も相談できますか?
ご相談ください。業務の内容によっては、システム化よりもGASやマクロの方が手軽で合っている場合があります。その場合は正直にお伝えします。
Q. どのくらいの期間がかかりますか?
業務の範囲によって変わります。見積や帳票までまとめてシステム化するか、取り込みや出力など一部だけを自動化するかで、期間は大きく変わります。まずは現状をうかがい、目安をお伝えします。