役に立つか?VBAメモ

仕事で使ったVBAをメモっとく

肥大化したExcelファイルを整理する

同僚が「このファイル、コピペするのにすごく時間がかかって応答しなくなる。」
というので、覗いてみたところファイルサイズが4MB弱あった。
内容はどう見積もっても500KB弱程度のはず・・・
シートが50個程度で、データ数は1シート100~500ぐらい。

で、最初に考えたのが図形を大量に入れてないか?でしたが、見ても見当たらない。
”編集”-”検索と選択”-”オブジェクトの選択と表示”とやってみると・・・
出るわ出るわでズラーっとリストアップされました、TextBoxが!しかも枠線なし!
見えないはずですよ~
とても数えられないので、VBEで以下を記述、実行。

Sub shapescount()
MsgBox ActiveSheet.Shapes.Count
End Sub

出ました。
その数3万弱(゚д゚)!

コピペコピペを繰り返し、7年間コツコツ集めたんですねw
削除には以下を記述して実行。

Sub del()
ActiveSheet.Shapes.SelectAll
Selection.Delete
End Sub

Selection.Deleteで何故かつまってしまうので、セレクトしたところで手動削除しました。
これらを各シートで実行し、全てのシェイプを削除しました。

が!がががが、まだ3MB弱のファイルサイズ。
なんで??

あるシートでCtrl+Shift+Endをやってみたところ、最終セルは2500行目あたり。
勿論データはそんなところには入っていない。一方、列は正常。

この異常な最終セルの設定が真犯人だったようで、約50シートの余分なセルを削除して上書き保存すると・・・
ファイルサイズは440KBになりました。

目視確認できないシェイプとコピペ乱用、シートの複製・列の挿入削除の乱発は面倒なことになるという教訓でした。
めでたしめでたしw

ん?ななねんかん?年度ごとにファイル分けてる・・?
ああ、やや少ないものの後6ファイル同様なのがあるんだ・・・・(´・ω・`)