Excelマクロを組んだ人が退職したあとに会社が困ること|属人化リスクと対策を整理した

「この計算、○○さんしかわからないんです」「前任者が作ったExcelが壊れたけど誰も直せない」——中小企業の経営者・事務担当者からよく聞く話です。

Excelのマクロは便利です。ボタン一つで複雑な集計や帳票出力が自動化でき、業務効率が大幅に上がります。しかし作った人が退職した瞬間に、会社にとって「誰も触れない時限爆弾」になることがあります。

この記事では、Excelマクロの属人化がどのような問題を引き起こすか、そしてAIを使った解決策を含む対策を整理します。


目次

Excelマクロとは何か

ExcelマクロはVBA(Visual Basic for Applications)というプログラミング言語で書かれた自動化の仕組みです。MicrosoftがExcelやWordなどのOfficeアプリケーション専用に作ったプログラミング言語で、Pythonなどと同じく「プログラミング言語の一種」です。

動く場所がExcel・Word・AccessなどのOfficeアプリ内に限定されている点が他のプログラミング言語との大きな違いで、その分セルの読み書き・シートの操作・印刷などをコードで直接制御しやすい設計になっています。

一度書いてしまえばボタン一つで同じ処理を何度でも自動実行できるため、IT担当者がいない中小企業でも業務の自動化ができる手軽な手段として長年使われてきました。


実際のマクロはこういうコードで書かれている

「マクロ」と聞いても実物を見たことがない方のために、実際のコードを見てみましょう。以下は中小企業でよく使われる代表的な例として、毎月の売上データを集計して報告書を自動生成するマクロを紹介します。

売上データシートのデータを商品別・月別に集計して、月次報告書シートに自動で出力するマクロです。

VB
Sub 月次売上集計()

    Dim ws売上 As Worksheet
    Dim ws報告 As Worksheet
    Dim 最終行 As Long
    Dim i As Long
    Dim 商品名 As String
    Dim As String
    Dim 金額 As Long

    ' シートを取得する
    Set ws売上 = ThisWorkbook.Sheets("売上データ")
    Set ws報告 = ThisWorkbook.Sheets("月次報告書")

    ' 月次報告書シートを一旦クリアする
    ws報告.Cells.Clear

    ' 集計用の辞書を作る
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")

    ' 売上データの最終行を取得する
    最終行 = ws売上.Cells(Rows.Count, 1).End(xlUp).Row

    ' 2行目からループして商品別・月別に集計する
    For i = 2 To 最終行
= Format(ws売上.Cells(i, 1).Value, "YYYY-MM")
        商品名 = ws売上.Cells(i, 2).Value
        金額 = ws売上.Cells(i, 6).Value

        Dim key As String
        key = 商品名 & "|" &
        If dic.exists(key) Then
            dic(key) = dic(key) + 金額
        Else
            dic.Add key, 金額
        End If
    Next i

    ' ヘッダー行を書き出す
    ws報告.Cells(1, 1).Value = "商品名"
    ws報告.Cells(1, 2).Value = ""
    ws報告.Cells(1, 3).Value = "売上合計"

    ' 集計結果を書き出す
    Dim 出力行 As Long
    出力行 = 2
    Dim k As Variant
    For Each k In dic.Keys
        Dim parts() As String
        parts = Split(k, "|")
        ws報告.Cells(出力行, 1).Value = parts(0)
        ws報告.Cells(出力行, 2).Value = parts(1)
        ws報告.Cells(出力行, 3).Value = dic(k)
        出力行 = 出力行 + 1
    Next k

    MsgBox "月次集計が完了しました。", vbInformation

End Sub

コードを読めない方でも、日本語のコメント(' で始まる行)を追うだけで何をしているかが大まかにわかる構造になっています。


マクロはどのようにExcelと紐づいているのか

マクロのコードがどこに保存されていて、シート上のボタンとどうつながっているのかを理解しておくと、社内のマクロを調べるときに役立ちます。

VBAエディタとは

VBAエディタはExcel内に内蔵されたコードの編集画面です。Alt+F11を押すと開きます。

画面左側の「プロジェクトツリー」には現在開いているExcelファイルの構造が表示されます。「Microsoft Excel Objects」の下にSheet1・Sheet2…といった各シートが並び、その下に「標準モジュール」というフォルダがあります。マクロのコードはほとんどの場合この標準モジュールの中(Module1など)に書かれています。

シート上のボタンとマクロはどう繋がっているか

シート上に設置されたボタンは、どのマクロを実行するかという「登録情報」を持っています。ボタンを右クリックして「マクロの登録」を選ぶと、そのボタンに紐づいているマクロ名が確認できます。

ボタンをクリックすると「マクロの登録」で指定されたマクロ名をModule1の中から探して実行する、という仕組みです。つまりボタンとコードは直接つながっているわけではなく、「マクロ名」という名前を通じて間接的につながっています

この仕組みを知っておくと、「ボタンを押してもエラーが出る」という状況で原因を調べやすくなります。まず右クリックで登録されているマクロ名を確認し、そのマクロ名がModule1の中に存在するかどうかを確認するだけで原因が絞れます。

マクロ名が変更されていたり、Module1ごと削除されていたりすると「マクロが見つからない」というエラーが発生します。


退職後に起きる3つの問題

上記のようなマクロが社内に存在する状態で担当者が退職すると、以下のような問題が発生します。

問題1:マクロが突然動かなくなる

ExcelやWindowsのアップデート・PCの買い替えをきっかけに、これまで動いていたマクロが突然エラーを出して止まることがあります

エラーメッセージが表示されても、コードの中身を理解していなければどこを直せばいいかわかりません。月末の締め処理の当日にマクロが動かなくなり、手作業で対応しようとしたが元のデータ構造が複雑すぎて処理が翌日にずれ込んだ——というケースは珍しくありません。

問題2:誰もメンテナンスできない

マクロは一度動き始めると何年も使い続けることがあります。その間に業務内容が変わったり新しい項目が増えたりしても、コードを読める人がいなければ対応できません。

消費税率が変わったのにマクロの計算が古いままになっていて、何ヶ月も気づかなかったという事例は実際に起きています。マクロが動いているように見えても、中の計算が古いままになっているケースがあります

問題3:何をやっているかわからないまま使い続ける

最も怖いのがこれです。「ボタンを押すと請求書ができる」という操作だけを引き継いで、中で何をしているかを誰も把握していない状態が続くことがあります。

ある日取引先から「請求金額がおかしい」という連絡が来て初めて気づく、というケースがあります。いつからおかしくなっていたのかもわからないため、過去にさかのぼって確認する作業が発生します。


なぜこうなるのか

マクロが属人化する原因は3つあります。

作った人が引き継ぎをしないまま退職する
マクロを作った担当者本人は「ボタンを押すだけで使える」と思っているため、内部の説明をしないまま退職することがあります。

コードにコメントが書かれていない
独学で作ったマクロは「この処理は何のためにやっているか」という説明(コメント)が書かれていないことがほとんどです。先ほどの3つのサンプルでは意図的にコメントを入れましたが、実際の社内マクロはコメントがまったくないケースが多いです。

誰も触りたがらない
「壊れたら困る」という心理から誰も中を確認しようとしません。その結果、問題が潜在したまま長期間放置されます。


AIを使ってマクロを解読・修正・新規作成する方法

コードが読めなくてもAIを活用すれば対応できます。3つの段階に分けて説明します。

段階1:解読する

VBAエディタ(Alt+F11で開く)でコードをコピーして、ChatGPTまたはClaudeに以下のように貼り付けます。

以下のExcel VBAコードが何をしているか、日本語で説明してください。
また、このコードに問題があれば指摘してください。

(コードをここに貼り付ける)

コードの内容・処理の意図・潜在的な問題点を日本語で説明してくれます。完全に理解できなくても「このマクロは〇〇をするためのものだ」という概要がつかめるだけで対応しやすくなります

段階2:修正する

「このコードの〇〇を変えたい」という指示を出すと修正してくれます。

このコードの消費税率を8%から10%に変更してください
このコードに「売上金額が0の行はスキップする」という処理を追加してください

修正後のコードをそのままVBAエディタに貼り直すだけで対応できます。

段階3:新しく書いてもらう

既存のマクロを修正するだけでなく、新しいマクロをゼロから作ってもらうこともできます。

Excelで以下の処理を自動化するVBAマクロを作ってください。
・「受注データ」シートのD列(ステータス)が「出荷済み」の行を
・「出荷済み一覧」シートにコピーして
・コピー後に元のシートの該当行を削除する

プログラミングの知識がなくても、やりたいことを日本語で説明するだけでコードが生成されます。生成されたコードをVBAエディタのModule1に貼り付けて実行するだけです。


対策として何ができるか

AIを使った解読・修正以外にも、属人化を防ぐ・リスクを下げる対策があります。

退職前に動画で操作を録画する

マクロを実行している画面をWindowsの標準機能(Windowsキー+G)で録画して保存しておきます。「何のためのマクロか」「どのタイミングで使うか」「エラーが出たときの対処法」を音声で説明しながら録画すると引き継ぎ資料になります。

コードに日本語コメントを書き加える

既存のマクロを開いて各処理の前に日本語のコメントを追加します。AIに「このコードの意味を日本語で説明してください」と貼り付けると説明文を生成してくれるので、それをそのままコメントとして追記するだけです。

クラウドツールに置き換える

根本的な対策は、マクロに頼らない仕組みに切り替えることです。Google スプレッドシート+Apps Script・Microsoft Power Automate・n8nなどのクラウドツールを使えば、マクロと同等の自動化をクラウド上で実現できます。PCの環境に依存せず複数人で管理できるため属人化を防ぎやすくなります。


まとめ

Excelマクロの属人化は、中小企業で特に起きやすい問題です。作った人が退職したあとに「動かない」「直せない」「何をしているかわからない」という3つの問題が発生するリスクがあります。

短期的な対策は録画・コメント追記・AIでの解読で対応できます。AIを使えばコードが読めなくても解読・修正・新規作成まで対応できるようになりました。根本的な解決はクラウドツールへの移行か業務システムとしての作り直しです。

まず現在使っているマクロを棚卸しして「どのマクロが業務に不可欠か」「誰が作ったものか」「引き継ぎ資料があるか」を確認するだけで、リスクの全体像が見えてきます。


Excelマクロを業務システムに作り直したい場合

「マクロが壊れるたびに業務が止まっている」「退職者が作ったマクロの中身を誰も把握していない」という場合、当社ではExcelマクロの内容を整理した上で保守・引き継ぎがしやすい業務システムとして作り直す対応を行っています。既存のExcelファイルはそのままに、足りない部分だけを補う形での対応も可能です。お気軽にご相談ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

1981年生まれ、名古屋出身。
2008年より17年間ドイツ・ベルリンに在住。
ドイツの職業訓練プログラムを修了後、複数のIT企業でフルスタックエンジニアとして経験を積む。2022年よりドイツの大手システム開発会社で、リードエンジニアとして勤務する。小売・医療・メディアなど異なる業種に携わる。2026年6月株式会社Neurosynchを設立。2027年、日本に帰国予定。
著書「AI時代の海外移住戦略

コメント

コメントする

目次