Excelマクロが動かないときの原因と確認ポイント|有効化・エラー・環境の違い

マクロが動かないとき 原因と確認ポイント Excel自動化

「昨日まで動いていたマクロが、急に動かなくなった」「もらったExcelファイルのマクロが反応しない」——マクロのトラブルは、原因が分からないと手が止まってしまいます。この記事では、Excelマクロが動かないときに確認したいポイントを、順番に整理します。

マクロ・VBAでできることの全体像は、Excel作業を自動化する方法7選で紹介しています。

まず確認したい主な原因

  • マクロが有効になっていない(そもそも実行されていない)
  • ファイル形式がマクロを保存できない形式になっている
  • 途中でエラーが出て止まっている
  • シート名・ファイルの場所・フォルダーなど、コードが前提にしているものが変わった
  • PCの環境(Excelのバージョンなど)がコードの想定と違う

マクロが有効になっているか確認する

ファイルを開いたときに「マクロが無効にされました」と黄色いバーが出ている場合は、マクロが実行されません。信頼できるファイルであることを確認したうえで、「コンテンツの有効化」を押してください。

インターネットからダウンロードしたファイルやメールで受け取ったファイルは、Windowsが「ブロック」している場合があります。この場合は、ファイルを右クリックして「プロパティ」を開き、「全般」タブの下にある「許可する」(セキュリティ)にチェックを入れてから、開き直してください。

マクロの設定は、Excelの「ファイル」→「オプション」→「トラストセンター」→「トラストセンターの設定」→「マクロの設定」で確認できます。会社のPCでは、管理者が設定を制限していることがあります。無理に変更せず、社内のルールに従ってください。

ファイル形式を確認する

マクロを保存できるファイル形式は、拡張子が「.xlsm」(マクロ有効ブック)などのものです。「.xlsx」で保存すると、マクロは保存されません。「名前を付けて保存」で形式を変えた覚えがないかを確認してください。

エラーが出て止まっている場合

実行中にエラーメッセージが出る場合は、画面の「デバッグ」ボタンを押すと、VBAの画面が開き、止まった行が黄色く表示されます。まずは、その行と、エラーメッセージの内容をメモしてください。

  • 「実行時エラー ‘9’:インデックスが有効範囲にありません」→ シート名やブック名が、コードに書かれた名前と違っている可能性があります
  • 「実行時エラー ‘1004’」→ セル範囲の指定やファイルの場所が想定と違っている可能性があります
  • 「コンパイルエラー:変数が定義されていません」→ 変数名の打ち間違いなどが考えられます

上の内容は、あくまで代表的な例です。同じエラー番号でも、原因はコードによって異なります。

止まる場所を確認する(ステップ実行)

どこで止まっているか分からないときは、VBAの画面(Alt+F11)でマクロの先頭にカーソルを置き、F8キーを押すと、1行ずつ実行できます。どの行で想定外の動きになるかが分かれば、原因の切り分けが進みます。

シートやファイルの場所が変わっていないか

コードの中に、シート名(例:「Sheet1」)やファイルのパス(例:「C:\〜」)が直接書かれている場合、次のような変更で動かなくなることがあります。

  • シート名を変更した、シートを追加・削除した
  • ファイルやフォルダーを別の場所に移動した、名前を変更した
  • 他のPCにファイルをコピーした(ユーザー名やドライブが違う)

PC環境の違いによるトラブル

別のPCに移したときや、Excelをアップデートしたときに動かなくなる場合は、Excelのバージョン(32ビット/64ビット)や、他のソフトウェアの利用(参照設定)が関係していることがあります。VBAの画面の「ツール」→「参照設定」に「参照不可」と表示された項目がある場合は、その項目が原因の可能性があります。

最初に確認したい4つの質問

原因を探す前に、状況を4つの質問で整理すると、調べる範囲をかなり絞れます。

  1. まったく動かないのか:ボタンを押しても何も起きないのか、途中でエラーが出るのか、一部は動くのか。「何も起きない」場合は、マクロの有効化やファイル形式など、実行する前の段階を疑います。
  2. どこまでは動いて、どこからがおかしいのか:処理の前半は動いて途中から止まるなら、まずは停止した行や、その直前までの処理を確認すると原因を絞りやすくなります。ステップ実行(F8)で止まる行を特定すると、範囲を絞れます。
  3. どの端末でも再現するのか:自分のパソコンだけで起きるなら、Excelのバージョンや設定、OSの変更など環境の違いが疑わしくなります。別のパソコンでも同じなら、ファイルやデータ側の変更を疑います。
  4. エラーは出ているか:エラーメッセージや番号が出ていれば、それが最大の手がかりです。出ないまま結果だけがおかしい場合は、計算方法の設定や、参照しているデータの中身を確認します。

確認するときは、「どの操作をしたか」「どこまで動いたか」「表示されたエラー」「直前に変えたこと」をメモしておくと、原因整理や相談時にも役立ちます。

実務でよくある原因は「環境」と「データの構造」の2つ

  • 環境の変化:Excelのバージョンが変わった、OSやセキュリティ設定などの変更でこれまで使えていたActiveX等の機能に影響が出た、計算方法が「自動」から「手動」になっていた、など。
  • データの構造の変化:固定の位置にあるものとして作っていた項目が変わった(ファイル名、項目名、行や列の位置など)。

「昨日まで動いていた」場合は、マクロそのものを疑う前に、昨日から今日までに変わったものがないかを、この2つで振り返ると見つけやすくなります。

原因を切り分けるコツ

  1. マクロが有効か、ファイル形式は正しいかを確認する
  2. エラーが出るなら、メッセージと止まった行をメモする
  3. F8で1行ずつ実行し、止まる場所を確認する
  4. シート名・ファイルの場所など、最近変わったことを思い出す
  5. それでも分からなければ、コードを見直す(次の項目を参照)

マクロが動かないとき、私が実際に行っている切り分けの流れ

既存のExcelマクロについて問い合わせを受けたとき、私はいきなりVBAコードを修正するのではなく、まず「どのような条件で問題が起きているのか」を確認します。

最初に聞くのは、主に次の3点です。

  • 毎回同じ問題が発生するのか
  • どのようなエラーメッセージが表示されるのか
  • ExcelやPCなどの利用環境はどうなっているのか

この情報を確認したうえで、実際に同じ問題を再現できるか試します。自分の環境で再現しない場合は、そこで「原因が分からない」と判断するのではなく、相手の利用環境や操作手順、問題が起きるデータや条件、エラー内容を確認します。さらに、自分の環境とコードや設定に違いがないかも見ていきます。

問題を再現できたら、原因を探すためにVBAのステップ実行(F8キー)を使うことが多いです。必ずしもコードの先頭からすべてを追うわけではありません。エラーになっている行を起点に、変数の値、セル・シート・ブックの参照先、Ifなどの条件分岐、ループ処理などを確認します。「どこから想定していた結果と違い始めたのか」を探していくのがポイントです。

コードを修正する前には、必ず元のファイルのバックアップやコピーを取ります。既存マクロの修正では、問題箇所以外の機能に影響する可能性もあるためです。私の場合は「問い合わせ内容の確認→再現→原因の切り分け→修正」の順番で進めています。

ご自身のマクロが動かないときは、まず元のファイルをコピーしてから、①毎回起きるか ②エラーメッセージの内容 ③Excelのバージョンなどの環境、の3点をメモしてみてください。原因を探すときの手がかりになります。

AIにコードを確認してもらうときの注意点

生成AIにVBAコードを見てもらう方法もあります。ただし、コードにパスワード、社内サーバーの名前、個人情報などが含まれていないかを、貼り付ける前に必ず確認してください。また、AIが示した修正案は、そのまま本番のファイルで実行せず、必ずコピーしたファイルで動作を確認してください。AIの回答が正しいとは限りません。

マクロを確認できる無料ツール

mars worksが公開しているマクロ健康診断は、ExcelマクロのVBAコードを貼り付けると、「シートを1枚足したら止まった」「フォルダーを移したら動かない」といった不具合の原因になりやすい書き方を探してくれるツールです。

  1. ExcelでAlt+F11を押し、VBAの画面を開きます
  2. 標準モジュールのコードを全選択(Ctrl+A)してコピーします
  3. ツールに貼り付けて、診断を実行します

.bas・.cls・.frm・.txtのファイルを読み込むこともできます。診断結果は、動作を保証するものではありません。コードにパスワードや社内サーバー名が含まれている場合は、貼り付ける前に消しておいてください。

ほかの無料ツールは、Excel自動化の無料ツールまとめで紹介しています。

ツールで解決しないときは

次のような場合は、ご自身で触る前に、状況を整理してから進めるのが安心です。

  • どこから確認すればよいか分からない
  • 前任者が作ったもので、コードの意図が分からない
  • 修正による他の処理への影響範囲が判断できない
  • 複数のシート・ファイルにまたがっている

どこまで自分で確認すればよいか分からない場合や、修正前に原因を整理したい場合は、ココナラのExcel・VBAの困りごと相談もあります。ファイルやマクロを作成・修正するものではなく、考えられる対応方法と次に確認することを文章でお渡しするサービスです。購入は前提にしていません。

まずは、マクロが有効か、ファイル形式は正しいかの2点から確認してみてください。

マクロとVBAの関係は、マクロとVBAの違いとは?初心者向けに関係と始め方を整理で整理しています。

※広告・PR:以下は、筆者自身が出品・販売している商品・サービスのご案内です。
確認しても原因が分からないときは、ココナラで、Excelの困りごと1つ(関数・集計・簡単なVBAの原因確認と修正)を受け付けています。
▶ Excelの困りごと1つを3日目安で対応します: https://coconala.com/services/4438964
サービスページの「無料で見積り相談」から、購入前にご相談いただけます。
※内容によっては対応できない場合があります。

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