仕事柄、マイクロソフトのExcelからは逃げられません。もう呪いですよここまで来ると。
  
  サーバーに置かれた誰が作ったかも判らないエクセルファイルを使っていろいろデータのやりとりを日々行っているわけですが、いろんな部署から不特定多数のアクセスがあると、知らない間にいろいろと汚染されていることがあります。
  
  例えばスタイル。恐ろしい数のスタイルがいつの間にか設定されており、ファイルサイズが膨れ上がったり、旧ファイル形式では書式の破壊を引き起こしたり。
  これはマイクロソフトの公式でも「スタイル削除のVBA」を公開するほどの公認不具合ですが、どういうわけかこれでは消せない、手動で削除しても消せない完全なるゴミスタイルがあったりして気分が悪いです。
  ゴミスタイルの名前に特定地域の地名が入ってたりすることから該当支店がなにかやらかしてるんだと思うんですが、イタチごっこになっていて手がつけられません。タチの悪いことに、これらのゴミスタイルはセルのコピーやシートのコピーを機会に別ファイルに乗り移ったりします。
  
  そしてもう一つ、外部参照の残骸です。
  どうしても消えない、どこに設定されているか判らないリンクが悩みの種でした。
  Google先生などで訊いてみても、出てくるのは「リンクの編集で参照元を変更する」とか「名前に設定されている場合は名前の管理から消す」とか「条件付き書式に設定されている場合は〜」「オブジェクトに設定されている場合は~」とか。
  全部確認しました、シートのどこにも、オブジェクトのどこにも、名前にも条件付き書式にも該当のリンクは見つかりません。リンクの解除も受け付けない、これは一体どうすればいいのか。
  
  意外なところに手段が転がっていました。
  実はExcelのファイル形式、.xlsxや.xlsmはzipファイルなんですって。へー。
  
  ものは試しに拡張子をzipに変えてみると……おお、確かに内部データが見えます。
  「xl」フォルダの中身を見ていくと、さらにいくつかのデータとフォルダが。その中に「externalLinks」というフォルダを開くと、「externalLink1.xml」のファイルと「_rels」というフォルダが。そのフォルダの中には「externalLink1.xml.rels」というファイルが。
  ファイルを開いてみると……消せなかったゴミリンクがバッチリ記載されているではありませんか。
  これらのファイルを削除すると、なぜかexternalLinksのフォルダ自体が消えました。拡張子を元に戻し、ファイルを開くと、参照できない値が云々と言われてファイルの修復が始まりました。修復が終わると……バッチリリンク消えてますね。
  
  もう一つ、スタイルの件。xlフォルダの配下に「styles.xml」というファイルがありました。その中をみると、ゴミスタイルがバッチリ見えています。
  zipファイルの中身を直接編集はできないので、一旦デスクトップ等に「styles.xml」をコピー。これをテキストエディタで開くと、随分見辛いですが「<csllStyles count="(数字)">」から始まって「</cellStyles>」で終わるタグ? の中に「<cellStyle name=」で始まる無数のスタイルがあります。これを削除……ただし、全て削除してしまうとファイル内の書式が破壊されてしまう事象を確認したので、どれか最低一つは残す必要があるようです。デフォルトのスタイル<cellStyle name="Followed Hyperlink" xfId="1"/>と<cellStyle name="Hyperlink" xfId="2"/>を残すのがお勧めでしょうか? ついでに<csllStyles count="(数字)">の数字のところも2に変更。
  ファイルをzipに戻して拡張子を元に戻してファイルを開くと、今まで消せなかったゴミスタイルが消えていました。
  このファイルを上書き保存して、再度zip化してstyles.xmlを確認すると、先ほどのcountは3に修正され、新たに標準というスタイルが作られていました。
  
  方法としてはものすごい邪道だと思うんですが、もし同様の悩みを抱えている方がいたら「自己責任において」試してみてはいかがでしょうか。下手すりゃファイルが壊れる方法なので、当然バックアップを取ってから。
AD

コメント(2)