TL;DR: クイック修復
お急ぎの場合は、次の手順を順番に試してください:
- 標準の修復機能: Excelを起動 →
ファイル→開く→参照→ ファイルを選択 →開くボタンの横にある矢印をクリック → 開いて修復をクリックします。 - 別の形式で保存: 修復後にファイルが開いた場合は、すぐに
.xlsb(バイナリ)または.csv形式で保存して破損したXMLのゴミを取り除き、その後再び.xlsxで保存し直します。 - Google スプレッドシート: ファイルをGoogle ドライブにアップロードします。GoogleのパーサーはExcelよりも許容範囲が広い場合があり、クリーンなバージョンを再エクスポートできることがあります。
シナリオ:深夜2時の本番環境トラブル
夜も更けた頃、重要なレポートが突然開けなくなりました。.xlsx ファイルを開こうとすると、Excelから次のようなメッセージが表示されます:「'filename.xlsx' の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?」
奇跡を信じて「はい」をクリックしますが、表示されるのは空のワークブックか、「修復されたレコード: /xl/drawings/drawing1.xml パーツによる描画」といったログファイルだけです。データの半分は消え、書式設定はまるでマトリックスのバグ(グリッチ)のように崩れています。これは通常、圧縮されたExcelアーカイブ内の基礎となるXML構造が、保存時のクラッシュ、ネットワークの切断、またはサードパーティ製ライブラリによる無効なタグの生成などによって、不正な形式になったために起こります。
根本原因:実体はただのZIPファイル
.xlsx ファイルはバイナリの塊ではなく、特定のフォルダ構造を持つXMLファイルを格納した、名前を変更しただけのZIPアーカイブです。Excelが「内容に問題がある」と言うとき、それは通常、XMLタグが正しく閉じられていないか、本来あるべきでない場所に無効な文字(ヌルバイトなど)が含まれていることを意味します。具体的には、xl/sharedStrings.xml や xl/worksheets/sheet1.xml がよくある原因箇所です。
「外科手術」アプローチ:手動XML修復
組み込みの修復機能が失敗した場合は、内部に踏み込む必要があります。ファイル構造に対して手動で「手術」を行う方法は以下の通りです。
ステップ1:ブックを展開する
- ファイルのバックアップコピーを作成します。決してオリジナルのファイルで作業しないでください。
- 拡張子を
.xlsxから.zipに変更します。 - 7-Zip、WinRAR、またはOS標準のユーティリティを使用して、内容をフォルダに展開します。
ステップ2:破損箇所を特定する
xl/ フォルダに移動します。ほとんどのエラーは以下に存在します:
xl/sharedStrings.xml:ブック内で使用されているすべてのユニークな文字列が保存されています。ここが破損すると、ファイル全体が開けなくなります。xl/worksheets/:sheet1.xml、sheet2.xmlなどが含まれています。
これらのファイルを開くには、VS Code や Notepad++ などのツールを使用してください。ファイルが巨大な場合、標準のメモ帳(Notepad)はクラッシュするため使用しないでください。
ステップ3:XMLの検証と修正
LinuxやmacOSを使用している場合は、xmllint を使って破損している正確な行を見つけることができます:
xmllint --noout xl/sharedStrings.xml
もし Opening and ending tag mismatch(開始タグと終了タグの不一致)のようなエラーが返されたら、そこが問題の箇所です。VS Codeでは、XML拡張機能を使用して「ドキュメントの整形(Format Document)」を行うことができます。フォーマッタは通常、構文が壊れている正確な場所で停止するか、ハイライト表示します。
一般的な問題には以下が含まれます:
- 単一のタグ内での属性の重複。
- エスケープされていない無効な文字(ASCII制御文字)。
- ファイルが途切れており、末尾の
</sst>や</worksheet>タグが欠落している。
手動でタグを修正するか、破損したXMLノードを削除して、ファイルを保存します。
ステップ4:アーカイブの再構築
ここが少しトリッキーな部分です。フォルダそのものではなく、フォルダの中身をZIP圧縮する必要があります。
- 展開したフォルダの中に入ります。
- すべてのファイルとフォルダ(
_rels、docProps、xl、[Content_Types].xml)を選択します。 - 右クリック → 「送る」 → 「圧縮 (zip 形式) フォルダー」。
- 作成された
.zipファイルの拡張子を.xlsxに戻します。
検証:修正の確認
新しいファイルをExcelで開きます。「問題が見つかりました」というプロンプトが表示されずに開けば成功です。すぐに名前を付けて保存を行い、Excelに内部パーツの再インデックスを行わせることで、ファイル構造がOpenXML標準に100%準拠していることを確認してください。
データ損失のチェック
sharedStrings.xml 内で破損した <si>(文字列アイテム)タグを削除した場合、スプレッドシート内の一部のセルが空になるか、0が表示されることがあります。整合性を確認するために、破損箇所の近くにあったことがわかっている値を CTRL+F で素早く検索してください。
参考文献とツール
- Open XML SDK Productivity Tool:
.xlsxファイルを検証し、スキーマのどの部分に違反しているかを正確に指摘できるMicrosoftのツールです。 - SST (Shared String Table) の制限: 巨大なファイルでは、
sharedStrings.xml内のuniqueCount属性が実際の文字列数と一致しないために破損することがよくあります。

