TL;DR
Excelがファイルを開いたものの修復ダイアログが表示された場合、.xlsx / .xls ファイルに内部的な破損があります。被害が少ない順に、以下の方法を試してください:
- ファイル → 開く → 開いて修復 を手動で実行する — 削除される内容をより細かく制御できます。
- すべてのシートデータを新しいワークブックにコピーする。
- Excelがすでに自動修復を行いOKをクリックしてしまった場合は、承認する前に表示された修復ログを確認する — 削除された内容が具体的に記載されています。
何が起きたのか
Excelに以下のメッセージが表示された場合:
Excel was able to open the file by repairing or removing the unreadable content
....xlsx 内部のZIPベースのXML構造に、破損した部分が1つ以上存在します。主な原因は以下の通りです:
- ネットワーク経由の保存中にファイルが途中で切断された — SharePointやマップドライブが典型的な原因です。
- 2人が同じファイルを同時に開いており、一方の保存がもう一方を部分的に上書きしてしまった。
- Excelがまだ書き込み中にウイルス対策ソフトやバックアップソフトがファイルをロックした。
- 保存中にディスクの空き容量が0バイトになった。共有ドライブではよく起こります。
- FATstructureが破損したExcel 97〜2003の古い
.xlsファイル。
Excelの自動修復は無言で行われます。解析できない部分をすべて削除しますが、警告もなく、元に戻すこともできません。破損の程度によっては、グラフ、ピボットテーブル、条件付き書式ルール、またはシート全体が失われる可能性があります。
ステップ1 — OKをクリックする前に修復ログを確認する
Excelはファイルにアクセスできるようになる前に、折りたたみ可能な修復サマリーを表示します。まだOKをクリックしないでください。**「削除されたコンテンツを確認するにはここをクリック」**をクリックすると、削除されたすべての内容を一覧したXMLログファイルが開きます。そのログを保存しておきましょう。上司にQ3のピボットテーブルがなぜ消えたか聞かれたときに役立ちます。
ステップ2 — 手動で開いて修復する
自動修復されたファイルを保存せずに閉じます。次に、より細かく制御しながら自分で修復します:
- ファイルを何も開かない状態でExcelを起動する。
- ファイル → 開く → 参照 に進み、対象ファイルに移動する。
- 「開く」ボタンの横のドロップダウン矢印をクリックし、**「開いて修復」**を選択する。
- まず**「修復」を試す — 数式と書式が保持されます。修復が失敗した場合のみ「データの抽出」**を選ぶ。データの抽出はすべてを生の値に変換します。
ステップ3 — まずファイルをローカルパスにコピーする
実際のファイル破損よりも、ネットワークパスが原因で誤った破損レポートが表示されることの方が多いです。データ損失と判断する前に、ファイルをローカルにコピーして再度試してください:
# Windows — ネットワーク共有からローカルの一時フォルダにコピー
copy "\\\\server\\share\\report.xlsx" "C:\\Temp\\report_local.xlsx"
# macOS
cp "/Volumes/NAS/report.xlsx" "~/Desktop/report_local.xlsx"
ローカルコピーが修復ダイアログなしで開けた場合、問題はファイルの破損ではなくネットワークパスにあります。新しいファイル名で保存し直してください。
ステップ4 — XLSXの内部を調べる
.xlsx ファイルはXMLを含むZIPアーカイブに過ぎません。展開して、どの部分が破損しているかを正確に確認できます:
# Windows (PowerShell)
Rename-Item report.xlsx report.zip
Expand-Archive report.zip -DestinationPath .\report_unzipped
# macOS / Linux
cp report.xlsx report.zip
unzip report.zip -d report_unzipped
まず以下の4つのファイルを確認してください — 破損ケースの90%をカバーしています:
xl/workbook.xml # ワークブックの構造
xl/worksheets/ # シートごとに1つのXMLファイル
xl/sharedStrings.xml # すべてのテキストセルの値
xl/styles.xml # セルの書式ルール
VS Codeで開いてください。ファイル末尾付近のコンテンツの途切れやエンコードエラーは破損の明確なサインです。軽微な破損であれば、XMLを手動で修正して再度ZIPに圧縮できます:
# 手動修正後に再ZIPする (Linux/macOS)
cd report_unzipped
zip -r ../report_fixed.xlsx .
.xlsx に名前を変更してExcelでテストしてください。
ステップ5 — 以前のバージョンを復元する
最も素早い解決策は過去のバージョンに戻すことです。以下のソースを確認してください:
- OneDrive:OneDriveウェブでファイルを右クリック → バージョン履歴 → 破損のタイムスタンプより前のバージョンを復元。OneDriveはMicrosoft 365サブスクライバーに対して最大500バージョンを保持します。
- Windowsファイル履歴:エクスプローラーでファイルを右クリック → 「以前のバージョンの復元」。
- SharePoint:ドキュメントライブラリを開く → ファイルを選択 → バージョン履歴 → 復元。
ステップ6 — Pythonで生データを抽出する
ファイルの破損がひどくExcel自体の修復が効かない場合、openpyxlを試す価値があります。Excelよりも不正なXMLに対して寛容です:
pip install openpyxl
import openpyxl
wb = openpyxl.load_workbook('report.xlsx', data_only=True, read_only=True)
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
print(f"--- Sheet: {sheet_name} ---")
for row in ws.iter_rows(values_only=True):
print(row)
数式や書式は取得できません。しかしExcelが諦めた後でも、生の数値やテキストは多くの場合復元可能です。
再発防止策
- ローカルに保存してからコピーし直す。 ネットワーク共有で作業する場合は、まず
C:\Temp\に保存し、完成後にファイルをコピーし直してください。これだけでネットワーク関連の破損の大半を防げます。 - 自動回復の間隔を5分に設定する:ファイル → オプション → 保存。自動回復の保存先がネットワークパスではなくローカルドライブを指していることを確認してください。
- 重要なファイルには
.xlsx形式を使用する。古い.xlsバイナリ形式は破損しやすいです。 - OneDriveでは、Excelファイルを頻繁に使用するフォルダの**「オンデマンドファイル」**を無効にする。部分的にダウンロードされたファイルは毎回このエラーを引き起こします。
確認事項
以下の条件を満たせば修復成功です:
- Excelが修復ダイアログなしでファイルを開く。
- すべてのシートが存在し、データが期待通りである。
- 数式が正しく計算される —
Ctrl+Alt+F9で強制的に全再計算を実行してください。 - グラフとピボットテーブルがエラーなく表示される。
復元したファイルはすぐに新しいファイル名で保存してください。データが正常であることを確認するまで、元のファイルを上書きしないでください。

