【マクロ・ClosedXML】
'xxxx.xlsx'の一部の内容に問題が見つかりました。とエラーが表示される場合の原因と対処法


(最終更新日:

記事イメージ

お疲れ様です。堺です。

マクロやClosedXML、EPPlus(C#でエクセル操作するライブラリ)などで処理して保存したエクセルファイルを開くと、「'XXXX.xlsx'の一部の内容に問題が見つかりました。」というエラーメッセージが出るトラブルについて、原因と対処法を紹介します。

ファイルを開くと、'XXXX.xlsx'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?と表示される。
ファイルを開くと、'XXXX.xlsx'の一部の内容に問題が見つかりました
尚、設定言語が英語の場合、"We found a problem with some content in 'xxxx.xlsx'. Do you want us to try to recover as much as we can?"と表示されます。
尚、設定言語が英語の場合、"We found a problem with some content in 'xxxx.xlsx'. Do you want us to try to recover as much as we can?"と表示されます

原因:XMLの構成がエクセルのルールを逸脱している場合に発生

Office2007以降のエクセルファイル(xlsx形式)はXML形式の集合体として構成されており、XMLの内容を解読してエクセルUIとして描写されています。ClosedXML等のライブラリはこのXMLを操作するAPI群と言えます。

本件のエラーは、エクセルのルールにそぐわない内容を、ClosedXML等を通じてXMLに書き込んでしまうことにより発生します。「ルールにそぐわない内容」とは例えば「正しくない式をセルに記入する」、「1048577行以降の行・XFD列以降の列に属するセルに値を書き込む」といった内容が挙げられます。以下詳細解説します。

原因例①:不完全な式をセルに入れてしまっている

例えば、以下の例のように不完全な式(カッコが閉じていない)をセルに入れて保存してしまうと、エクセルで開くときに標題のエラーが表示されます。

C#
using var wb = new XLWorkbook(@"C:\Users\sakai\Desktop\Book1.xlsx");
var ws = wb.Worksheets.First();
//不完全な式を入れてしまっている(IF関数のカッコが閉じていない)
ws.Cell(1, 1).SetFormulaA1("=IF(A1=A2,1,0");
wb.Save();

この場合、「はい」を選択すると不完全な式が入っている箇所は空きセルに変更された後にワークブックが開きます。

セル数が多いとどこが破損しているか大変ですが、式が消えている箇所を見つけて、そのセルを操作しているC#コードを修正しに行きましょう。

原因例②:値を入れる範囲が1048576×16383を超過している

エクセルファイルで表示可能な範囲1048576×16383、XFD1048576セルよりも下・右に値を入れている場合もこのメッセージが表示されます。

内部のXMLとしては書き込み可能ですが、エクセルのUIでは表示できないので切り捨てられます。

ClosedXMLやEPPlusのエクセルファイル操作については、別途記事を作成しています。

APIの使い方を網羅的に紹介しています。是非ご参考ください。

関連記事:【C#でエクセル操作】ClosedXMLの特徴と操作まとめ
関連記事:【C#でエクセル操作】EPPlus操作まとめ

【社内PR】チーム・ウォーク

記事筆者へのお問い合わせ、仕事のご依頼

当社では、IT活用をはじめ、業務効率化やM&A、管理会計など幅広い分野でコンサルティング事業・IT開発事業を行っております。

この記事をご覧になり、もし相談してみたい点などがあれば、ぜひ問い合わせフォームまでご連絡ください。

皆様のご投稿をお待ちしております。

記事筆者へ問い合わせする

※ご相談は無料でお受けいたします。

この記事へのコメント

ニックネーム(任意)

返信通知先Emailアドレス(任意)

本文


* 感想やご意見等、お気軽にコメントください。但し、公序良俗に反するコメントはお控えください。
* 管理者が承認したコメントはこの箇所に公開させていただく可能性がございます。
* 返信通知先Emailアドレスは、筆者のみに通知され、公開されることはありません。返信通知先Emailを入力された場合は、コメントへの返信をこちらに掲載した際に通知させていただきます。その他の目的には使用いたしません。
* スパム対策のため、コメントは日本語のみ受け付けております。

堺財経電算合同会社 小規模IT構築サービス