深夜2時の本番トラブル
深夜、50MBの財務レポートに直前の更新が必要になりました。共有フォルダからファイルを開こうとすると、ポップアップが表示され作業が止まってしまいます:This file is locked for editing by another user(このファイルは別のユーザーによって編集のためロックされています)。さらに悪いことに、表示されている「ユーザー」は数時間前に帰宅した誰か、あるいは自分自身のユーザー名だったりします。
これは単なる一時的な不具合ではありません。通常、ローカルOS、SMBネットワークプロトコル、そしてExcelの一時ファイルシステム間の通信の不整合によって発生します。ここでは、ロックを解除して作業を再開する方法を紹介します。
原因の分析:なぜExcelはファイルが使用中だと判断するのか
ProjectData.xlsxを開くたびに、Excelは同じフォルダ内に隠し属性の1KBの一時ファイルを作成します。この「オーナーファイル」は~$(例:~$ProjectData.xlsx)で始まります。これにより、誰がファイルを開いているかをネットワークに通知します。Excelがクラッシュしたり、Wi-Fiが瞬断したりすると、この小さなファイルが残ってしまうことがあります。Excelはそれを見て、セッションがまだアクティブであると誤認するのです。
ステップ1:ゾンビ化したExcelプロセスを終了する
Excelを閉じたつもりでも、プロセスが終了を拒否することがあります。バックグラウンドで残り続け、スプレッドシートを掴んだままの状態です。タスクマネージャーで探す代わりに、コマンドを使って一括でクリーンアップしましょう。
taskkill /f /im excel.exe
自分のマシンでこれを実行してください。もしエラーメッセージに同僚の名前が表示されている場合は、その人にも実行してもらいます。このコマンドは隠れたすべてのExcelインスタンスを強制終了させ、ファイルハンドルを解放します。
ステップ2:オーナーファイルを特定して削除する
エラーが解消されない場合、サーバー上に隠しファイル~$が残っている可能性があります。ロック状態をクリアするには、これを手動で削除する必要があります。
- ロックされたファイルがあるフォルダを開きます。
- Windows エクスプローラーのリボンで、表示 > 表示 > 隠しファイル を選択します。
~$YourFileName.xlsxという名前の半透明のファイルを探します。- それを削除します。
もしWindowsに「ファイルは使用中です」というエラーで拒否された場合、ロックはサーバーレベルでより深く保持されています。ステップ3に進んでください。
ステップ3:ファイルサーバー上のセッションを強制終了する
ファイルがWindows Server上にある場合、サーバーが「孤立した」SMBセッションを維持していることがあります。サーバー管理コンソールからこの接続を手動で切断できます。
- ファイルサーバーにログインします(または自席のPCでRSATを開きます)。
Win + Rを押し、fsmgmt.mscと入力してEnterを押します。- 左側のペインで 公開ファイル に移動します。
- リストから該当するファイルを見つけます。「公開ファイル」列でソートすると早く見つかります。
- エントリを右クリックし、公開ファイルを閉じる を選択します。
スピードを重視するなら、PowerShellを使って一行で実行することも可能です:
Get-SmbOpenFile | Where-Object {$_.Path -like "*ProjectData.xlsx*"} | Close-SmbOpenFile -Force
ステップ4:Windows エクスプローラーのプレビューウィンドウのバグ
これは多くのITプロが見落としがちな落とし穴です。プレビューウィンドウが有効になっていると、Windows エクスプローラーがファイルの内容を表示するために読み取り専用のハンドルを開きます。これが原因で、Excelが完全な書き込み権限を取得できなくなることがあります。
- ファイルのフォルダを開きます。
Alt + Pを押してプレビューウィンドウを非表示にします。- もう一度ファイルを開いてみてください。
ステップ5:ファイルの整合性を確認する
クラッシュ後に強制的にファイルを開くと、わずかに破損のリスクが伴います。機密データを扱っている場合は、ロック事故の最中にファイルが壊れていないか確認するのが賢明です。
私は Hash Generator を使用して、バックアップとMD5またはSHA-256ハッシュを照合しています。これはブラウザベースのツールで、すべての処理をローカルで行うため、データのプライバシーを保ちつつ、50MBのスプレッドシートが正しい状態であることを確認できます。
修正を確認する方法
以下の3点を確認して、完全に解決したか確かめてください:
~$テスト: ファイルを開いたときに一時ファイルが現れ、閉じた瞬間に消えることを確認します。- タイトルバーの確認: Excelの上部を確認します。 「[読み取り専用]」と表示されていなければ、制御を取り戻せています。
- 共同作業者による確認: チームメイトにファイルを開いてもらいます。ロックメッセージに「あなたの名前」が表示されるはずです。
再発防止のアドバイス
- 共同編集へ移行する: ファイルをSharePointやOneDriveに移動します。これらはCobaltプロトコルを使用しており、ロックファイルなしで10人以上が同時に編集できます。
- ネットワークドライブを避ける: UNCパス(
\\Server\Share\File.xlsx)を使用してください。マップされたドライブ(Z:\など)は、セッションタイムアウトによりファイルが「スタック」しやすくなります。 - アンチウイルスソフトの設定: 本番フォルダ内の
.xlsxや.xlsbファイルをスキャン対象から外すように設定します。リアルタイムの「アクセス時スキャン」は、数秒間のファイルロックを引き起こす頻繁な原因となります。

