古いExcelファイル(.xls)は開くだけで更新しなくてもバイナリ情報が変わるので注意。xlsxは変わりません

5 0 0

Excel

excel エクセル

お仕事でExcelファイルを使うことが多いのですが、少しハマったところがあったのでブログにも記しておきます。

比較的新しいExcelファイルの拡張子は「.xlsx」だと思いますが、Excel2003以前くらいだと「.xls」という拡張子になっています。

昔から脈々と受け継がれてきたファイルだと、未だに拡張子がこの「.xls」だったりします。

この古いExcelファイルが曲者で、何も編集もせず、保存もせず、ただ開いて閉じただけで、バイナリ情報が変わってしまうんですね。

SPONSORED LINK

.xls拡張子のExcelファイルは開くとバイナリ情報が変わる

どういうことか、実際に例を示してみましょう。

▼拡張子「.xls」の古いExcelファイル「Book1.xls」があります。

xls

▼このファイルをコピーして「Book1 – コピー.xls」を作成しました。ファイル名が違うだけで、当然中身は同じです。

xls コピー

▼ファイル比較ツール「WinMerge」を使って2つのファイルをバイナリ比較すると、同一ファイル(差異なし)という結果になります。

xls 同一ファイル

まあここまでは当然ですね。コピーしただけですから。

想定外だったのはここからです。

▼「Book1.xls」を開きます。で、何もせずに閉じます。ファイルの更新・保存ももちろんしません。

xls

何も更新してないんだから、ファイルは何も変わっていないと思いますよね。

再びWinMergeでファイルを比較してみましょう。

▼ファイルを開いて閉じただけなのに、バイナリ情報に差異ありという結果になりました。

xls 差異あり

これはどうやら古いバージョンのExcelの仕様らしいです。

この仕様に気づかず、なぜ同じファイルなのに差異があるんだ!?ってかなり悩みました。

一度開いてしまったxlsファイルの同一性を確認するには

この仕様のせいで、古いExcelファイルを一度開いてしまうとバイナリレベルでは差異が生じてしまい、ファイルの同一性が確認できません。

ではどうすれば良いのでしょうか。

この問題については、今回使用したファイル比較ツール「WinMerge」のExcel比較機能で対処できます。

バイナリ情報ではなく、セルの値や見た目などを比較してファイルが同一か確認できます。

詳細は下記記事にまとめているので参考にしてください。

WinMergeはテキストだけじゃなくExcelの差分比較もできる神機能があった!もちろん無料!

新しいExcelファイル(.xlsx)ではこの事象は起きない

ちなみに、Excel2007以降で標準となった拡張子「.xlsx」のファイルではこの事象は発生しません。

ファイルを開いただけでバイナリ情報が変わることはありません。

まとめ

というわけで、古い拡張子「.xls」のExcelファイルは開くだけでバイナリ情報が変わってしまうよ!というお話でした。

家庭でこのようなExcelファイルの比較作業をすることはないでしょうが、仕事だと結構あったりします。

知らないとハマってしまうと思うので、皆さん気をつけましょうね。

っていうか、できるなら古いxlsファイルはxlsxに変換していきましょう。ファイルサイズも小さくなりますしね。

<関連記事>

WinMergeはテキストだけじゃなくExcelの差分比較もできる神機能があった!もちろん無料!

Excel(エクセル)で文字列と数値を変換する方法。知っとくと地味に便利ですよ!

Excel(エクセル)の列がアルファベットではなく数字で表示されている場合の対処方法

SPONSORED LINK

Excel

  • メールアドレスを記入して購読すれば、更新をメールで受信できます。現在、41 人が購読中です!
    ※メールアドレスは管理人には知られません

  • ラブグアバが更新されたらプッシュ通知でお知らせします。

  • おっさん管理人グアバが執筆しています。ミスチル好き。
    私が気になったこと(主にスマホ/Webサービス/生活/ミスチル/たまにトイレ)について書いています。2017年3月時点で月間38万PV。
    詳細はコチラ

    フォローはこちらから!