少々微妙である。生じていた事象をつじつまがあうよう当方で勝手に解釈したことであるから確実性は低い。でも多少なりとも参考にはなるだろうから、書いちゃいます。ただしどういう事象があってこう解釈したのかは伏せときます。広く使われている製品だから、断言しちゃうと影響が大きいのよ。コンピュータネタ、目次へMicorosoft ExcelってQuatroProのアイディアを真似して、ワークブックという仕組みを持っている。Microsoft Excelのバージョン4までは、1ファイル=1シートだったのが、1ファイル=1ブック、ブックの中にシートがいっぱい、という構成になった。
んでもって、Microsoft Excelをバージョンアップすることって当然あるよな。以前のバージョンのブックは資産として残りますので、これを新バージョンにコンバートして使うことになります。ところがMicrosoft Excelの従来のフォーマットが崩れたりするのをおそれて、あるいはもっと直接的に「拡張子を決め打ち」してマクロを動かしていたりすると、意図的に旧バージョンのファイル形式を残すこともございます。といいながら、やはりビッグデータの時代、65536行の制限が外れるのはうれしい。
かくしてxlsとxlsxのファイルが混在するようになる、と。これだけなら注意のしようがあるのですが、どうやらxls形式のワークシートをそのままxlsxのワークブックに綴じこむことができるようなのですね。すると原本をxls形式のまま残していても、これを新バージョンのMS-Excelで読み込んでxlsxのブックの中にコピーして加工し出力ってことがいかにも起りそう。このとき、ちょっと困りそうなことがあるみたい。
ブックは新しいMicrosoft Excel。中に収めているのは古いxls形式のワークシート。すると、中身はxls形式のままでも、それを解釈するMicrosoft Excelは新しいバージョン。ってことは「メタデータを期待されるxls形式で認識してくれない」可能性がある。
ここから先はちょっと言いにくい。が、たとえば行全体を選択して、セルの属性を設定。こうしても、具体的にデータを入力するといった操作をしていなければ、旧バージョンでは有効なシートの範囲と認識されていなかったが、設定した属性によっては「一番端までシートが有効と認識される」ということだ。さあ、印刷してみよう。紙はたっぷり用意しないと間に合わないかもよ。
もっともこんな風に理路整然と解釈して筋道をつけたのは、あくまで私の頭であって、社内で聞いたわけでもましてやマイクロソフトに伺ったわけでもないので、間違っているかもしれない。いやボーランド相手なら「そういう風に作ったんだろう。プログラマとして理解できる」なのだが(そもそもそんなバグはないけど)、マイクロソフトは当方の想像をこえたアクロバティックなバグではなくて仕様ですを作るので、確証が持てないというところもあるのだ。
が、こんな風に考えて見直せると、問題が発生するたびにモグラたたきしてエネルギーを消費するということは、ひょっとして少なくなるんじゃないかなと、期待できると言ってもよかろう。てへっ。