Help

修復されたレコード: /xl/sharedStrings.xml パーツ内の文字列プロパティ (文字列)の解決方法

Excelを開いたときに
”ブック名”の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?ブックの発行元が信頼できる場合は「はい」をクリックしてください。
と表示されてしまったことはないでしょうか。

'***'の一部の内容に問題が見つかりました。可能な限り内容を回復しますか? ぶっくの発行元が信頼できる場合は、[はい]をクリックしてください。

今まで編集できていたのになぜだろう?と思ったことはないでしょうか。原因は様々なので一概には解決方法をご紹介できませんが、原因までたどり着く方法を順を追って説明します。

Excelを回復しても大丈夫?

メッセージにある通り発行元が信頼できる場合は、回復してしまっても問題ありません。
ただし、修復後のファイルを保存する場合は、一旦別の名前にしておくなどバックアップは残しておきましょう。

どこが修復されたのかを確認したい場合は、以降も確認ください。

エラーの原因を調査

今回の現象を調査する上で、必要な知識を少し説明します。

エクセルは『XML』の集合体

エクセルファイルが、実はXMLが集まって作られていることはご存じでしたか?
エクセルは表計算ソフトですが、データや色、レイアウトなど様々な情報で管理されています。
詳しいことは省きますがXMLには以下のメリットがあります。

  • XMLのタグは、データの意味を表し、構造化できる。
  • XMLのタグは自由に決めることができる。
  • XMLにはデータの内容が記載され、レイアウトやデザインの機能は分離されている。

データの構造化する上でXMLは拡張性とエクセルの相性はぴったりだったんですね。

エクセルファイルをXMLに分割

準備するもの

  • 修復前のファイル
  • 修復後のファイル
  • 差分比較ツール(DF、WinMergeなど) ※あれば

エクセルファイルをXML化

まずは修復前と修復後のファイルをXMLに分解しましょう。

とは言っても難しい手順はなく、拡張子を”zip”に変更して解凍するだけです。

拡張子を変更

拡張子を”xlsx”から”zip”に変更します。

『book1.xlsx』 → 『book1.zip

『book1_修復後.xlsx』 → 『book1‗修復後.zip

※拡張子がない場合は拡張子を表示する設定に変更してください。
エクスプローラ>表示>表示>ファイル名拡張子

ファイルを解凍

修復前と修復後のZipファイルを解凍します。

比較

修復前と修復後の解凍したファイルを比較すれば差分が確認できます。

比較方法などは以下を参考にしてください。

WinMerge: ファイルの違いがすぐわかる、WinMergeの基本的な使い方 | Qiita 

原因について

原因は修復後に表示されるメッセージの内容である程度特定できます。

上記画像の場合、
『xl/sharedStrings.xml』ファイルの”パーツ内文字列”に問題があったので修正しました。
という意味になります。

今回の例では、文字列を入力した際に自動で設定されているフリガナが異常となっていました。

Webブラウザや他のアプリケーションなどからコピーした文を貼り付けた場合などに発生する印象があります。
Excelやテキストファイル以外からコピーすると発生することがあるので注意してください。
Webページの文言は、一旦テキストエディタなどに張り付けてからコピーするといいでしょう。

補足

エラーの内容はExcelのバージョンやアップデートなどで変わります。
頻発するようであれば不具合の可能性もありますので、必要に応じてマイクロソフトに問い合わせて下さい。