Excel2013と格闘している
ミッション
仕事で与えられたミッションは
「Excel2003をExcel2013で動かせるかを調査すること」
です。
私はExcel2013は初体験でしたでしょうか?
ま、年々、気持ち悪くなるアニメーション系の動きがまぁ重い重い。
内容も凄まじい感じで1シート中にリンクが10万セルあったりして。全部書き出すマクロで最初にinteger
のオーバーフローエラーに引っかかり、次にExcel Row のMAXエラーに引っかかり・・・
Excelじゃなきゃって言うのはわかるけど、すごいねぇ〜。仕様書もないんだけど。
まず互換モードで保存からだわね。
互換モードで保存
まず、Excel2013を起動してExcel2003のファイルを開く。
が!
リンク先がないと「リンク先の更新しますか?」ってしつこい。
リンク先みつからないから、「更新しない」で一度開く。その後、「名前の定義」でリンク切れの箇所を見つける。
ブックの保護とかシートの保護とかを外す。
でも、Excel2013に上げる前のExcel2003ではなんでエラーになってないの?という疑問。ブックに対しての名前定義でリンク先にファイルないから、元のファイルから削除しちゃってから再度、読み込み。名前の定義以外にリンク管理からも削除しておかないと同じこと。
Excel2003とExcel2013だと場所が違うからまぁ大変。
名前の管理
Excel2003 : メニューバーの[挿入]→[名前]→[定義]
Excel2013 : 数式タブの[名前の管理]
それぞれで削除が出来る。
リンク管理
Excel2003 : [編集]→[リンクの設定]
Excel2013 : [データ]タブの[リンクの編集]
最終的にはここでリンクが切れてるのは削除できるし、リンク先を変更することが出来る。
互換モードで保存
普通に.xlsm
で保存しても、.xlsm
をオープンし直しても「互換モード」のままだったりする。
なので保存の方法も大切。
[ファイル]-[互換モード]で保存する。形式はマクロがついてるなら.xlsm
にしないとダメだと思う。その前に、VBA側の設定を変更しておくといいかも。
普通に.xlsm
で保存すると同じ場所に.xlam
が出来ちゃう。
ブックの保護はしてるし、非表示シートがあるかららしいんだけど、その後が大変なんだよね。結局.xlam
はアドイン形式ってことで、本来なら隠しフォルダ内にいればいいものなのに、そのまま保存して.xlsm
を開いて保存すると、なぜか「.xlam
を置き換えますか?」ってなる。
しかも
保存されているのはなんと.xlam
の方だったりして、.xlsm
を開いても変更がない。Excelのシートの更新なのに?
どういうこと!?
意味がわからないんだけど、いろんな拡張子で保存されても一般ピーポーに説明出来ないから、.xlsm
だけにしたい。
ということでVBAのThis Workbook
の[IsAddin]をFalse
にしてみる。
保存
なんだ。出来るんじゃん。
.xlsm
ファイルだけになって更新されました。
あ、隠しフォルダ内に.xlam
は入れておきましたけどね。
ということで、何がなんだかわかりませんが、検証終了ってことで。
そう、まだ「調査」なのだ。動かせるかどうかってことであれば
動かせる
ってことになるけど、9Mくらいのファイルだけど、起動がまぁ遅い。
2分ちょっとかかる。
こちらの原因はシート名に2バイト文字があるとxml形式にしているからいけないとかって。それは変更出来ないな。日本人だからな。
でもね、よくもまぁExcelで作り込んだわねぇって言いたい。すごいわ。