Excelファイルが何らかの原因で壊れてしまい、復元すると
「削除されたレコード: /xl/worksheet/sheet2.xml パーツ内の共有数式」
「削除されたレコード: /xl/calcChain.xml パーツ内の数式(計算のプロパティ)」
なんて文言がでてきてしまうエラーが生じたがなんとか解決した話を書いていこうと思います!
症状
Adobe Analyticsのレポートビルダー機能で、レポートを定期配信しています。しかし、急に配信されるExcelファイルが破損してしまいました。
復元できる部分だけ復元してファイルを開くと、
「削除されたレコード: /xl/worksheet/sheet2.xml パーツ内の共有数式」
「削除されたレコード: /xl/calcChain.xml パーツ内の数式(計算のプロパティ)」
という文言が表示されます。定期配信するものなので、このレポートを修正するだけではダメで、配信されても壊れないようにしないといけません。
方針
解決の手段としては、
①エラーの文言をググり、先生に解決してもらう。
②エラーの箇所を特定する
の方針で行こうと思います。
①助けてグーグル先生!
今の時代たいていのことはググれば解決します。今回もグーグル先生にお願いするとしましょう。
ということで教えていただいた原因の可能性がこちらです。
・テーブルやクエリ名に特殊文字が含まれているとエラーが起こるかも。(半角または全角の()がエラー原因となることがあるようなので)
(ソース)
・エクセルのバージョンを最新にするとなおった。
(ソース)
・ファイル名を別名で保存するとなおった。
(ソース)
どれも試しましたが解決せずorz
というわけで方針②に行きます。
②エラー箇所の特定
エラーが起きている場所を特定します。
仮に、レポートビルダーでAAから数値を取得する部分で、数値が空になっていればそれはアドビアナリティクス側に問題がありそう。
きちんとAAからデータを取得できており、それを(INDEX+MATCH等で)引っ張った先のところで数値が空になっていたら、エクセル側に問題がある、ということになりますね。
「削除されたレコード: /xl/worksheet/sheet2.xml パーツ内の共有数式」
まずこれから行きます。今回のエクセルファイルは自分が作ったものではなく、シート名も変わってしまっているので、sheet2がどのシートを指すのかわかりません。
それを調べるには、
Alt + F11 で VBEを起動する
でできます。VBEを開くと、左側に、sheet1(設定したシート名)という形で各シートが表記されているので、今回削除されたのがどのシートにあるか確認します。
次に、配信前(壊れる前)と配信後(壊れた後)のファイルを用意して、このシートを見比べます。
見比べる際は、色付けを行うと便利です。こちらを参照しました。
壊れている(数値がごっそり消えている)場所が特定できました!
今回は、INDEX+MATCHで数値を並び替えた表の部分に問題があるようだったので、Excel側の問題のようです。
おそらく原因であろう場所が分かったので、あとはひたすら実験です。
1 ごっそり消えている部分全体を、壊れる前のファイルで消して、レポート再配信をして、配信後のファイルが壊れていないか確認 → 壊れなかったら、原因はその場所だと断定できる
2 壊れる前のファイルで、壊れているところが構成する要素を一つずつ消して、再配信して、より詳細な問題の場所を特定する。
こんな感じで行きます。
結果
場所はわかりました。どうやら別シートを参照している1つのセルの部分だけが悪さをしているようです。
問題が その場所 にあるのか、 そのセルの内容 にあるのか不明なので、
とりあえず、その場所がいけないんだと当たりをつけて、消えてしまう部分の内容をごっそり別のセルに移動して再配信してみたら、解決しました。
・・・解決しました! よかった!
けっこう時間を使ってしまったのではやくなおってと焦りだしていたんですよね。よかったです。
結果なおったのはいいものの、どうしてその場所がいけなかったのか、という原因の核の部分はさっぱりわかっていないのでどうにももやもやした感じが残ります。
また、
「削除されたレコード: /xl/calcChain.xml パーツ内の数式(計算のプロパティ)」
に触れる前に解決したのも、もやもやの一因に。
Excelには魔物が潜んでいるですね。
学びの記録おわり