Article

Excelファイルが開けない時の復旧手順

高田晃太郎
Excelファイルが開けない時の復旧手順

Microsoft 365のOneDrive/SharePointは既定で最大500世代のバージョン履歴を保持¹し、削除済みアイテムは最大93日間回復可能²という設計になっています。つまり、Excelファイルが突然「開けない」「壊れた」と見える状況でも、適切な復旧手順を踏めば高確率で戻せます。要は、どこを起点に切り分け、どの順で打ち手を当てるか。アプリ側の不整合、ファイル自体の破損、ストレージや同期のトラブルは見た目の症状が似通う一方で、最短経路は異なります。ビジネスの停止時間を最小化するには、原因を早く狭め、失われたデータをバージョン履歴とバックアップから取り戻し、再発を封じる運用に接続することが肝要です。ここでは、現場で実効性の高い「Excelが開けない時の復旧手順」を、切り分けから救出、復元、そして再発防止まで一気通貫で示します。作業は必ず原本のコピーを作ってから行ってください。

症状から原因を絞り込む:アプリ、ファイル、ストレージ

まず異常の再現性を確認します。同じ端末で別のExcelファイルが開けるか、対象ファイルが別端末では開けるかを比べると、Excel本体の問題か、ファイル固有の破損か、ストレージや権限に起因するかの当たりが付きます。アプリ起因であれば、起動直後にクラッシュする、セーフモードでは開ける、アドインを外すと安定するといった反応が手がかりになります。セーフモードは「アドインや拡張機能を無効化して最小構成で起動する」モードで、Windowsの[Win]+[R]で「excel /safe」と入力するのが最短です⁵(通常起動で不安定でも、セーフモードで開けるならアドインやテンプレートの干渉が疑わしい)。ファイル破損であれば、対象ファイルだけでエラーが再現し、拡張子をzipとして展開すると内部XMLが壊れている、Open and Repairで部分回復できる、といった兆候が出ます。ストレージや同期に起因する場合は、OneDriveやSharePointで同期の競合バッジが付いている、ネットワークパス上のファイルだけが開けない、権限変更後から開けなくなった、といった文脈が揃います。ここまでの観察で仮説を立て、最短の救出経路を選ぶのが時間対効果に優れます。

アプリ側の健全性を素早く確かめるにはセーフモードが有効です⁵。セーフモードで起動して対象ファイルを開けるなら、常駐アドインやテンプレート、ドライバの干渉が疑わしい範囲に収束します。Windows側のシステムファイル破損が疑われるなら、SFC(System File Checker)やDISM(Deployment Image Servicing and Management)で自己修復を走らせてから再検証するのが安全です。以下のコマンドを管理者権限のターミナルで順に実行し、完了後に再起動して挙動を観察します。

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow

ストレージや同期のトラブルが疑われる場合は、対象ファイルの保存先に注目します。OneDrive/SharePoint上のパスなら同期クライアントの状態、競合ファイルの有無、最近の権限変更を確認します(見た目のアイコン更新に遅延があるため、先にブラウザから直接開けるかを試すと切り分けが早まります)。SMB共有(Windowsのファイル共有)ならネットワーク遅延やオフラインキャッシュ、ロックが残留していないかが論点です。ネットワーク越しのExcelはロックや遅延に弱いため、問題切り分け時はいったんローカルへコピーしてから開けるかも併せて試すと、根の深さが見えます。

壊れたブックを“開く”前提で救出する:現場で効くテクニック

Excel自身の機能で救出できる範囲は意外に広いです。アプリが起動するなら、まずはOpen and Repairを試します。[ファイル]から[開く]で対象を選び、[開く]右端のメニューで[開いて修復]を選択します。軽度の破損ならこれだけで回復します⁴。VBAや外部リンクが多いブックではアドインやマクロの読み込みが不安定要因になりやすいため、セーフモード(アドイン無効)で起動して読み込みを最小化した状態で同じ操作を行うのが実践的です。セーフモードの起動はパスが環境で異なるため、PowerShellから次のように明示的に起動するのが確実です(Office 365/2019の一例)。

Start-Process -FilePath "$Env:ProgramFiles\Microsoft Office\root\Office16\EXCEL.EXE" -ArgumentList "/safe" -PassThru

Open and Repairで回復しない場合でも、xlsxの正体がZipに格納されたOpen XML(Excel 2007以降の標準形式)である点は強力な退路になります。拡張子をzipに変更して展開し、xl/worksheets配下のワークシートXMLやxl/sharedStrings.xml、xl/styles.xmlなどを個別に取り出せれば、最悪セルの値だけでも救えます。編集は必ず複製で行い、XMLを壊さないようテキストエディタで慎重に扱います。Windows環境であれば、.NETのZipFile APIを使ってGUIレスに展開できます。

Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory("C:\\temp\\broken.xlsx", "C:\\temp\\extracted")

展開したフォルダのxl/worksheets/sheet1.xmlなどをテキストエディタで開き、明らかに途中で途切れている、もしくは不正な文字が混入している箇所を見つけたら、問題のシート単位で切り離すのが定石です。破損していないシートのXMLだけを新しい空のブックに戻せば、多くの場合は値と基本的な構造を取り戻せます。スクリプトで値をCSVに吐き出すのも速いアプローチです。PythonでZipを直接読み、ワークシートXMLからシンプルにセルのテキストを拾うだけでも、報告用途の数字は再利用できます。

import zipfile, xml.etree.ElementTree as ET
with zipfile.ZipFile('broken.xlsx') as z:
    xml = z.read('xl/worksheets/sheet1.xml')
root = ET.fromstring(xml)
ns = {'x': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'}
rows = []
for r in root.findall('.//x:sheetData/x:row', ns):
    row = []
    for c in r.findall('x:c', ns):
        v = c.findtext('x:v', default='', namespaces=ns)
        row.append(v)
    rows.append(','.join(row))
open('sheet1.csv','w',encoding='utf-8').write('\n'.join(rows))

外部リンクや名前定義が破損の起点になっているケースでは、リンク更新を抑止して開くのが常道です。起動時にリンク更新の確認を求める設定にしておき(Excelの[ファイル]→[オプション]→[詳細設定]内)、開いてから[データ]タブでリンクの編集を行い、切断または参照先の整合を取ってから保存します。どうしてもブックが開かない場合は、xlsb形式の一時ファイルやオートリカバリフォルダーの内容が残っていないかも確認に値します。ユーザープロファイル配下のAutoRecoverパス(例:C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel)を直接たどると、直近の作業内容が救えることがあります。

$path = "$Env:AppData\Microsoft\Excel"
Get-ChildItem $path -Recurse -Filter "*.xls*" | Sort-Object LastWriteTime -Descending | Select-Object -First 5

アプリが不安定な兆候を見せる場合は、問題の切り分けとしてアドインを全停止したうえで対象ファイルを開き、保存形式をxlsb(Excelバイナリ)に切り替える回避も効きます。バイナリ形式はXMLより剛性が高く、巨大ブックでは安定することが多いからです。ただし、最終的な配布先が求める形式要件には注意が必要です。

“開かずに戻す”復元ルート:バージョン履歴・ごみ箱・スナップショット

救出よりも速いのは、壊れる前の状態に戻してしまう判断です。Microsoft 365のOneDrive/SharePointにあるファイルなら、まずバージョン履歴を確認します。ブラウザで対象ファイルを右クリックして[バージョン履歴]を開き、壊れる直前の版をプレビューします。そこに必要なデータが残っていれば、その版を復元、もしくは別名でコピーして現在版と併存させると安全です。バージョン履歴は既定で最大500世代保持されるため³、短期間の誤操作や同期競合で失われたデータはここから戻る確率が高いです。誤削除であれば、サイトまたはOneDriveのごみ箱から最大93日間は復元可能です²。保持期間内であれば、サイトコレクションの第二段階ごみ箱まで遡ることもできます。

クラウド以外のオンプレミス共有であれば、影響範囲が端末単体か共有全体かで判断を分けます。端末単体であれば、Windowsのファイル履歴⁶やボリュームシャドウコピー(エクスプローラーの[プロパティ]→[以前のバージョン])から以前のバージョンを開けるかを確かめます。共有全体の障害やランサムウェア事案が疑われるなら、ストレージのスナップショット(時点コピー)からの巻き戻し、あるいはバックアップソフトからのファイル単位リストアが最短経路になります。ここで重要なのは、目の前の壊れたファイルを治そうと固執して時間を消費せず、組織のバックアップとスナップショットの設計に沿って、より確実で可逆的な復元方法に切り替える意思決定です。復元後は、壊れた版と比較して差分を評価し、事故の発生時刻と原因の仮説を更新しておくと、再発防止の検証がスムーズになります。

復元の判断と並行して、事後分析に資する証跡も押さえておきます。Windowsのイベントビューアでアプリケーションエラーの発生時刻を確認し、Excelのクラッシュが継続していないか、特定のDLLやアドインが例外を投げていないかを記録します。OneDriveやSharePointの監査ログが有効なら、対象ファイルへの更新、移動、削除、復元の操作履歴を抽出し、該当時刻の出来事と照合します。インシデントのタイムラインが描ければ、再発防止の手当てをどこに打つべきかが具体化します。

再発防止:バックアップと“壊れにくい”運用を設計する

Excelの復旧はその場で終わりにせず、二度と同じ痛みを味わわないための設計に接続するのが意思決定者の仕事です。まず、ファイル単位の事故に強いバックアップ方針を明文化します。クラウドを主軸にする場合は、バージョン履歴の世代数と保持期間、サイトごみ箱の運用、ランサムウェア対策としてのバージョン保護の確認が要点です。オンプレミスであれば、スナップショットの間隔と保持、オフライン媒体を含む3-2-1ルール(3つのコピーを2種類以上の媒体に保持し、そのうち1つをオフサイトに保管)の徹底、そしてリストアのリハーサルを定例化します。バックアップは実在の復旧時間で価値が決まるため、四半期に一度は実ファイルを題材にシナリオ駆動の演習を行い、目標復旧時間と実績の乖離を可視化します。

次に、Excel自体が壊れにくい作りと運用を選びます。巨大な次元での結合・変換・集計は、Power QueryやPower BIに逃がし、ブック本体は入力とプレゼンテーションに寄せると脆さが減ります。重いブックはxlsbで保存し、参照の循環や名前定義の肥大化を定期的に棚卸します。リンク依存の連鎖を短くし、外部リンクは集約用の一時領域にまとめるだけでも事故率は下がります。VBAは署名とバージョン管理を前提にし、コードはリポジトリに保管してレビューの対象にします。テンプレートは組織管理に置き、個人配布を抑えると、アドホックな改変による破損が減ります。加えて、OneDriveやSharePointを使う場合は、同期クライアントの強制更新と保護されたフォルダーの整備を標準とし、ネットワーク越しの重い書き込みが連発しない設計に改めます。Windowsのファイル履歴をエンドポイントで有効化しておくと([設定]→[更新とセキュリティ]→[バックアップ])、ユーザー自身がきめ細かく過去版に戻れるため、ヘルプデスクの一次対応が軽くなります。設定のポイントは「Windows ファイル履歴の実践ガイド」にまとめています。

最後に、コストの言語化をしておきます。Excelが開けない事故は、一見小粒でも連鎖的に遅延を発生させます。標準復旧手順の所要時間と、手戻りがあった場合の最大損失時間を見積もり、年次の想定回数を掛け合わせると、いま投資すべきバックアップや自動化の費用対効果が見えてきます。例えば、月次の締め処理で1時間止まると何人に何分の遅延が波及するか、代替策は何か、といった具体で会話すれば、優先順位は自然に上がります。復旧の訓練、テンプレートの標準化、クラウドのバージョン履歴活用、そしてリポジトリにコードと構造を載せる最低限の整備から始めてください。

現場ノート:よくある詰まりと突破口

私の経験では、壊れたブックが頑なに開かないとき、突破口は二つに集約されます。一つは、アプリやアドインを徹底的に静かにしてからOpen and Repairを試し、開いた瞬間に必要なシートを新規ブックへ避難させること。もう一つは、ファイルをzipとして割り切り、XMLを直接取り出して値を救い、レイアウトは後から再構成することです。どちらも数十分で成否が判定でき、判断に迷いません。復元の道が立つと見たら、迷わずバージョン履歴やバックアップへ切り替えるのが、チーム全体の時間を救う最適解です。

まとめ:復旧は設計で短くなる

Excelが開けないという事象は、アプリ、ファイル、ストレージの三つ巴で起きます。セーフモードとOpen and Repair、Zip展開によるXML救出、そしてOneDrive/SharePointのバージョン履歴やオンプレのスナップショットという復元ルートを適切に選べば、データは取り戻せます。大切なのは、復旧後にバックアップと運用の設計を見直し、同じ事故を短く終わらせる仕組みに変えることです。あなたの組織では、次に同じ事が起きたとき、誰がどの順で何分で対応しますか。今日、「Excelファイルが開けない時の復旧手順」を標準手順として整備し、演習とバージョン履歴・スナップショットの設定を点検しておきましょう。次回はより短い復旧で終わらせてください。

参考文献

[1] Microsoft Tech Community. New updates to OneDrive and SharePoint team site versioning. https://techcommunity.microsoft.com/blog/onedriveblog/new-updates-to-onedrive-and-sharepoint-team-site-versioning/204390
[2] Microsoft Learn. SharePoint Online and OneDrive for Business data deletion. https://learn.microsoft.com/en-us/compliance/assurance/assurance-sharepoint-online-data-deletion
[3] Microsoft Support. Restore a previous version of a file stored in OneDrive. https://support.microsoft.com/en-us/office/restore-a-previous-version-of-a-file-stored-in-onedrive-159cad6d-d76e-4981-88ef-de6e96c93893
[4] Microsoft Support. Repair a corrupted workbook. https://support.microsoft.com/office/repair-a-corrupted-workbook-153a45f4-6cab-44b1-93ca-801ddcd4ea53
[5] Microsoft Support. Open Office apps in Safe Mode on a Windows PC. https://support.microsoft.com/office/open-office-apps-in-safe-mode-on-a-windows-pc-dedf944a-5f4b-4afb-a453-528af4f7ac72
[6] Microsoft Support. Backup and restore with File History. https://support.microsoft.com/windows/backup-and-restore-with-file-history-7bf065bf-f1ea-0a78-c1cf-7dcf51cc8bfc