CSVファイルをExcelで扱うと以下のエラーとなった。原因と対策をメモ。
‘ファイル名.xlsx’の一部の内容に問題が見つかりました。可能な限り内容を回復しますか?ブックの発信元が信頼できる場合は、[はい]をクリックしてください。
読み取れなかった内容を修復または削除することにより、ファイルを開くことができました。
修復されたレコード: /xl/workbook.xmlパーツ内のワークシートのプロパティ(ブック)
再現手順
- CSVファイルをExcelで開く
- Excelファイル(.xlsx)として保存する
- 保存したファイルを開く
とすると一定の条件(後述)で上記のエラーとなります。
原因
ファイル名にExcelシート名として使用できない文字(例では全角スラッシュ「/」)が含まれている。
例)以下の「スラッシュ/.csv」を
Excelで開きます。
するとシート名がファイル名の「スラッシュ/」になっています。
シート名称に全角スラッシュ「/」は本来使用できません、これが原因。
このまま保存すると、次回このファイルを開いたときにエラーとなります。
ちなみにシート名に全角スラッシュなどを手入力すると以下のエラーとなります。
入力されたシートまたはグラフの名前が正しくありません。次の点を確認して修正してください。
対策
- CSVファイル名に上記文字を使用しない(全角にしてもダメ)。
- CSVファイルをExcelで開かない
が対策となります。
対策1.は気づけない事も多いです、Windowsのファイル名の規則とシート名の規則が似ているようで違うことも発生原因の一つと思います。
Windowsファイル名には「\/;*?”<>|」が使えません。
しかし全角にすれば使えます。
対策2.CSVファイルをExcelで開かない。
では何で開くのか、候補として「メモ帳、サクラエディタ、秀丸エディタ、MIFES」などのテキストエディタがあげられます。
個人的にはサクラエディタをオススメします。無償で使えて便利だからです。
<外部リンク> サクラエディタ | https://sakura-editor.github.io/
新しめのバージョンだとCSVの編集にも配慮があります。
設定>タイプ別設定>レイアウト:CSV
とします。
サクラエディタでCSVを扱いやすくなります。
余談
CSVはカンマ区切りされただけのプレーンテキストなのでテキストエディタで扱うのがベストと思います。
CSVなどのテキストファイルをExcelで開くともろもろ不都合があります。
- 数値の前ゼロが消える。例)「001」が「1」になる。
- 12桁以上の数値が指数形式になる。例)「123456789012」が「1.23457E+12」になる。
- 分数を入力しているつもりが日付扱いされる。例)「1/3」が「1月3日」になる。
今回紹介したエラーはそうそう遭遇しませんが上記の期待しない変換でイライラした経験はあるのではないでしょうか。
余談2
そもそも使っちゃいけない文字をシート名に使ってたら保存の時にエラーにして欲しい。
次に開いたときにエラーって。
もしくはシート名を「Sheet1」のままにしておいて欲しい。
結局「回復済み_Sheet1」なんて名前に修正されてしまうのだから。
余談3
今さらサクラエディタでもない?いやいやプレーンテキストの扱いだったらサクラエディタが優秀かと。
コーディングがあるならVisualStudioCodeだとは思います。
<内部リンク>Excel 最近使ったファイルの表示数変更とスタート画面の設定
<内部リンク>Excel 条件付き書式の一括削除