AccScan
技術

Accessが処理中に止まる|「中断」「応答なし」の原因切り分けと対処

Accessが処理途中で止まる・応答なしになる原因は6カテゴリ。重い処理・ネットワーク切断・リンク切れ・ファイル破損・PCリソース不足・VBAの無限ループを切り分け表で整理し、強制終了前の確認手順と破損リスクも解説します。

まずは、自社のAccessが「解析できるか」を無料で確認できます。

約2分・ファイル送信不要・発注義務なし

結論:「中断」は1種類ではない

Accessが処理の途中で止まる、「実行が中断されました」「処理が中断されました」といった趣旨のメッセージが出る、あるいは画面が固まって応答なしになる——これらは見た目は似ていますが、原因のカテゴリがまったく異なります。カテゴリを間違えると、対処してもすぐ再発します。

なお、「○○アクションは取り消されました」というメッセージが出る場合は、フォームやレポートのイベントでキャンセル処理(VBAやマクロの Cancel=True)が実行されたことが原因の場合もあり、このページで扱う「処理が途中で止まる」症状とは切り分けが必要です。表示されたメッセージの全文とエラー番号を記録してから対処を調べることをおすすめします。

当社が対応した事例でよく見る原因は、大きく6つに分類できます。まず以下の切り分け表で自分の状況に近いパターンを探してください。

原因の切り分け表

カテゴリ典型的な症状・状況最初に確認すること
① 重い処理・大量データ大量レコードのクエリや更新処理を実行すると長時間応答なしになる。タスクバーに「(応答なし)」と表示されることがある処理対象のレコード件数・テーブルのサイズを確認する。最終的に完了するか、それとも途中でエラーになるかを見る
② ネットワーク共有経由の遅延・切断ファイルサーバーやNAS上のaccdbを操作中に突然止まる。「ネットワーク アクセスが中断されました」のようなメッセージが出ることがあるネットワーク経由かローカルかを確認。UNCパスとドライブレターのどちらで接続しているかを確認する
③ リンクテーブル・外部データのリンク切れ起動直後またはフォーム操作中に止まる。サーバー移設やフォルダ移動の後から起きるようになったリンクテーブルマネージャーでリンク先のパスを確認する
④ ファイル破損特定のレコードを開くと止まる。修復後に一時的に直るが繰り返す最後に正常に動いた日時を確認。バックアップが残っているか確認する
⑤ PCリソース不足複数のアプリを起動している状態で処理が止まる。他のアプリを終了すると改善することがあるタスクマネージャーでメモリ・CPU使用率を確認する
⑥ VBAの長時間処理・無限ループVBAのマクロやコードを実行すると画面が固まったまま終わらない。Accessウィンドウ自体が「(応答なし)」になるVBAコード内にDoEventsが呼ばれているか、ループの終了条件が正しく書かれているかを確認する

① 重い処理・大量データ

大量のレコードへの更新クエリ、集計クエリ、あるいはサブクエリが多段に重なった複雑なクエリを実行すると、Accessが長時間応答なしに見えることがあります(件数だけでなく、フィールドの型・インデックスの有無・結合の多さ・保存先など多くの要因で変わります。ここでの説明は当社の経験則です)。これはエラーではなく、処理が続いているだけのケースが多いです。

強制終了する前に、数分待ってみてください。VBAのイベントプロシージャやループが制御を返さない間は、AccessのUIがイベントを処理できず、応答なしに見えることがあります。タスクバーに「(応答なし)」と出ていても、裏で処理を続けていて最終的に完了することがあります。

それでも改善しない場合や繰り返す場合は、クエリの設計を見直すのが根本対処です。不要なフィールドの除去、インデックスの追加、大きなテーブルの分割処理などが効果的です。詳しくはAccessが遅いときの原因切り分けと総合対処を参照してください。

② ネットワーク共有経由の遅延・切断

ファイルサーバーやNAS上のaccdbを複数人で共有している場合、ネットワークの一時的な遅延や切断がきっかけで処理が中断することがあります。Microsoft公式のドキュメントでは、Accessをネットワーク越しに使う場合は「高速で安定した接続」が前提とされています(Access error Your network access was interrupted | Microsoft Learn)。

ドライブレター(Z:ドライブなど)でマウントした共有フォルダへのアクセスは、グループポリシーの再適用でドライブが再接続されるタイミングや、アイドル時の自動切断が引き金になることが知られています。同公式ドキュメントでは、ドライブレターの代わりにUNCパス(\\サーバー名\フォルダ名\ファイル名.accdb)を使うことを代替策として挙げています。

当社では、VPN経由でaccdbを直接開く構成も、遅延や一時切断の影響を受けやすいと考えています。詳しくはVPN・リモートワークでAccessが遅い・壊れる理由と対策Accessが複数人で使うと遅い・壊れる原因を参照してください。

③ リンクテーブル・外部データのリンク切れ

Accessが外部のテーブルやファイルにリンクしている状態で、そのリンク先が移動・削除・名前変更されると、リンクを参照しようとしたときにエラーになったり、接続待ちで停止しているように見えたりすることがあります。フォームを開いた直後や特定のボタンを押した直後に止まるというパターンはリンク切れを疑うサインです。

確認手順は、「外部データ」タブ→「リンクテーブルマネージャー」を開いて「更新」を実行し、状態列が「失敗」になるテーブルを探すことです。表示や操作方法はAccessのバージョンによって異なります。サーバー移設後やフォルダ再整理後に頻発します。詳しくはAccessリンクテーブル運用の注意点を参照してください。

④ ファイル破損と⑤ PCリソース不足

ファイル破損が原因の場合、特定の操作で止まる、修復後に一時的に直るがすぐ再発する、というパターンが見られます。強制終了の直後から起きるようになった場合は破損の可能性が高まります。この場合は元ファイルのコピーを先に取ってから「データベースの最適化/修復」を試みてください。手順の詳細はAccessファイルが破損したら|修復の手順と、繰り返す破損の根本対処にまとめています。

PCのメモリやCPUが逼迫している場合、Access自体は正常でも処理が遅くなり、応答なし状態になることがあります。タスクマネージャー(Ctrl+Shift+Esc)でメモリやCPUの使用率を確認し、他のアプリを多数起動している場合は終了してから再試行してください。当社の対応事例では、古いPCやリソース割り当ての少ない仮想デスクトップ環境で見られることがあります。

⑥ VBAの長時間処理・無限ループ

VBAで書いたコードが原因の場合、アプリケーションレベルの「中断」と区別する必要があります。VBAのイベントプロシージャやループが制御を返さない間は、AccessのUIがイベントを処理できません。ループが長時間終わらないと、Accessのウィンドウ全体が「(応答なし)」になります。

VBAの公式ドキュメントには DoEvents 関数が記載されており、「ループ処理の中でOSが他のイベントを処理できるように制御を一時的に渡す」機能として説明されています(DoEvents function | Microsoft Learn)。ループの途中に DoEvents を入れると画面の固まりが和らぐことがあります。ただし DoEvents は処理の高速化や無限ループの解消にはなりません。また、イベントの再入(別の処理が割り込んで呼び出されること)が起きると予期しない動作になる場合があるため、長時間かかる処理では処理の分割も検討してください。

一方、ループの終了条件が誤っていて実質的に無限ループになっている場合は、DoEvents を入れてもループが終わりません。この場合はCtrl+Breakキーで実行を中断し、VBEでコードを確認してください。当社では、条件判定に使う変数の初期化漏れや、レコードセットのEOFチェックが抜けているケースを見ることがあります。

なお、ODBCリンクテーブルを経由するクエリには「ODBCTimeout」プロパティがあり、既定値は60秒です。タイムアウトが発生するとAccessはエラーを返して処理を止めます(ODBCTimeout property | Microsoft Learn)。SQL Serverなど外部DBへのクエリが60秒を超える場合は、このプロパティを調整するか、クエリ自体を最適化する必要があります。

強制終了前に確認すること

応答なし状態が続いているとき、反射的にAccessをタスクキルするのは最後の手段にしてください。書き込みの途中で強制終了すると、accdbファイルが破損するリスクがあります。中断された未完了の変更が失われたり、共有ファイルが破損して他のユーザーの利用にも影響したりする可能性があります。

まず数分待ちます。VBAの実行中であればCtrl+Breakで中断を試みることができます(ネットワーク待ちやデータベースエンジン内部の処理を強制停止できるわけではありません)。それでも動かない場合に初めてタスクマネージャーからプロセスを終了してください。強制終了後に動作がおかしいと感じたら、全ユーザーがAccessを閉じていることを確認し、元ファイルを別の場所にコピーして保全したうえで「最適化/修復」を検討することを当社では案内しています。修復によってデータが切り捨てられる場合もあるため、事前のコピー保全は省かないでください(Compact and repair a database | Microsoft Support)。

強制終了した後からAccessの動作がおかしくなった場合は、Accessファイルが開かないときの原因切り分けと対処も参照してください。

状況の判断に迷う場合は、無料の解析可否チェックで現在の環境を仮判定できます。

よくある質問

Q. クエリを実行したら画面が固まりました。どれくらい待てばいいですか?

処理対象のレコード数だけでなく、クエリの複雑さやインデックスの有無、ネットワーク経由かどうかによって大きく変わります。当社の経験則では重い処理では5〜10分かかることがあります。まず10分程度は待ってみてください。それ以上かかる場合はクエリの見直しが現実的です。ファイルがネットワーク共有上にある場合は、全ユーザーがAccessを閉じた後にローカルにコピーし、ローカル環境で同じ処理を試すと原因の切り分けになります。

Q. VBAのコードを実行すると毎回止まります。エラーメッセージは出ません。

エラーメッセージが出ずに止まる場合、無限ループや、終了しない外部ファイルの読み込み待ちが疑われます。VBEのデバッグモード(F5でなくF8でステップ実行)でどの行まで進むかを確認するのが早道です。ループ内に DoEvents の呼び出しがあるかどうかも確認してください。

Q. 「ネットワーク アクセスが中断されました」と表示されて止まります。

このメッセージはAccessが共有フォルダへの接続を失ったことを示しています。原因の切り分けに有効なのは、他の全ユーザーがAccessを閉じていることを確認してからファイルをローカルにコピーし、そのコピーで同じ操作を試すことです。ローカルで再現しなければ、ネットワーク経路または共有時固有の条件(同時利用・権限・ロックファイルなど)が関与している可能性が高まります。ドライブレターでマウントしている場合はUNCパスへの変更も試す価値があります(Microsoft公式資料でも代替策として挙げられています)。VPN経由での利用の場合はこちらの記事も参照してください。

Q. 強制終了したらAccessのファイルが開けなくなりました。

強制終了で書き込みが中断し、ファイルが壊れた可能性があります。バックアップが残っていればそこから復元するのが最も確実です。バックアップがない場合は、「データベースの最適化/修復」を試みてください。ただし修復の前に必ず元のファイルを別の場所にコピーして保全してから実施してください。詳しくはAccessファイルが破損したらを参照してください。

触れないAccessが「診断できるか」だけ、確かめませんか。

顧客データは送信不要。発注の義務もありません。

約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません