見出し画像

Excelファイルが突然壊れる理由&直し方


なぜ、Excelファイルが壊れるか?

「よく使っているExcelファイルに限って壊れる」という経験をした方も多いと思いますが、実は「よく使っているからこそ壊れる」のです。

どういう理屈かといえば・・・

  • 罫線やセルに着色をすると、内部的にその1つ1つに対して定義情報が蓄積される

  • 一度設定したものを消しても、定義情報そのものは消えない

  • 同じ箇所に何度も着色→脱色を繰り返すと、定義情報が増える場合がある

  • 100セルまとめて色を付ければ1回分の定義情報だが、1セルずつ付けると100回分になる

  •      :

こんな事情から、定義できる上限(明確な基準があるわけではありません)を超えると、別の領域を浸食して書き潰してしまい、その結果ファイルが壊れやすくなる様です。

「様です」と曖昧な表現になっているのは、旧形式ファイル(*.xls)時には定義情報の上限が65535回分だとされていたものが、新形式(*.xlsxなど、現状の形式)になってからどうなったか公式な案内がないためですが、同じように長期間使っていると同じように壊れているので、内部的な表現は同等と推定しています。
残念ながら、一度壊れてしまったファイルは元には戻りませんので、バックアップからサルベージするしかありません。とはいえ、そのまま使い続けていれば、すぐにまた壊れてしまうので、原因を理解した上で、適切な対処を早めに行いましょう。

破損しそうなExcelファイルの復元方法

Excel危機脱出方法(その1):別形式ファイルとして保存

保存できないと言われても、慌てることはありません。

一度キャンセルしてから、F12を押すか、名前を付けて保存から、保存形式を「*.xls」を選びます。

Excelの各種保存形式

こうすれば、壊れたファイルでも、たいていは保存できます。

ただし、旧形式ファイルのため、行×列は今よりも狭くなっており、65535行×4096列を超える箇所に設定があると、削除されてしまいます。とはいえ、緊急事態時にそのような事はいっていられませんから、ひとまず保存してから、改めて新形式ファイルに変換し、不足部分をコピペなどで補うしかありません。

Excel危機脱出方法(その2):新しいファイルに引っ越しする

旧様式ファイルに保存したところで、Excelファイルが不安定な状態にあることに、代わりはありません。

冒頭で述べた通り、一度定義してしまった設定は、削除しても消えませんから、きれいに初期化しようと思ったら、新しい依り代としてのファイルに引っ越しをするしかありません。

その際、単純にコピペをすると、ゴミのような定義情報を全て引きずって持って行ってしまいます。

例えば、”スタイル”にむやみに様々な定義が増えているファイルを見たことがあるかと思いますが、これが膨大なゴミ情報を引きずった状態の一例です。

左が標準のスタイル設定、右がゴミスタイルが増えた状態

それでは、どのように移植すればよいでしょうか?

一番確実なのは、「形式を指定して貼付け」→「数式」をすることですが、範囲が広いと人的ミスにつながり兼ねませんし、面倒です。

Excel危機脱出方法(その3):SYLK形式ファイルに保存する

そんな時、SYLK(シルク)形式ファイルにすると、少なくともコピペをする必要はなくなります。

SYLK(シルク)形式でExcelを保存

そんなファイル形式知らなかった、という方も多いと思いますが、実は表計算ソフト共通フォーマットとして、1980年代から存在する古い規格です。古いだけに、セルの着色や罫線情報などの再現には制約が生じますが、式を式のまま、文字は太字などの情報を残したまま、確実な保存ができます。

SYLK形式で継承できるもの/できないもの

このように、着色情報は「何か色が付いていた」程度にしか再現されませんが、他は概ね再現できています。規格ができた当時のコンピュータは白黒でしたから、当然かも知れません。

SYLK形式ファイルとは?

SYLK形式ファイルは、どんな表計算ソフト間でも互換がとれるような、共通の表現様式です。このため、特定のアプリケーションに依存した情報は表現できません。

原始的と言えば原始的ですが、なんとSYLKファイルはTEXT形式で表現されているので、メモ帳でも開くことができます。

表計算ソフトに限らず、多くのデータベース計ソフトウェアでもサポートしているなど、意外と互換の範囲が広いのが特徴です。

古いが故のメリットを活かす

古いことによるデメリットもありますが、スタイルなどの余計な情報を引っ張ってこないため、まっさらな(余計なゴミ情報のない)環境に引っ越すには、打って付けです。

壊れかけていたファイルをSYLK形式経由で新しい*.xlsx形式ファイルに引っ越しするだけで、ファイルサイズが数分の1になることは珍しくありません。その差分が、定義情報にあたります。


番外編:ファイルサイズ肥大化で、壊れる

つかいこんだExcelファイルのサイズが、10MBを超えているようなケースをよく見かけます。単純計算では、日本語1文字=2Byteなので、10MB=500,000文字分の情報ということになります。
実際にそんなに文字量が多いことはまずないので、これも定義や式、画像などが原因です。
画像のサイズを減らすなら、不要な式を整理するなりするだけで、驚くほどサイズダウンします(60MB → 2MBにした経験があります)。

サイズダウンの詳しい対処法は、こちらを参考にして下さい。


この記事が気に入ったらサポートをしてみませんか?