こんにちは、おずです。
今日は雑談的内容として、ExcelのVBAを使ってマクロを組んでいる人で、『なんかファイルザイズでかくない!?』ってなってる方向けの記事を書いてみようかと思います。
久しぶりにこんな症状が出て『あれ?』となった時にググってみても、お門違いな症状での記事ばっかり(似た感じのばっかりがすらーっと)出てて、役に立たないって人もいるかと思いますので、書いておこうかなと。
データ量が多くなる予定のファイルとかを作ってる時にやってしまうと思います。
では、Let’s Start!!!
他の記事で出ていない重くなる症状
今回初心者が陥り易いって思ってしまったのが、こんな感じ↓の症状
テストファイルとして作成してみました。中に入力されているデータは、こんな感じ↓でわかりやすく、簡単少量のデータにしました。
A~Cの上3行に簡単なデータを入力したものとなります。
このデータをそのまま”.xlsx”形式で保存したものが”test.xlsx”
このデータにフォームとボタンを配置し、4行程のコードを書いたのが”test1.xlsm”
このデータにフォームとボタンを配置し、4行程のコードを2文字程追加して書いたのが”test2.xlsm”
つまり、シートに入力されているデータは全部同じです。
マクロも実用性がほとんど無い、今回の記事を説明する為に記入したコードだけですので、データ的には重くなる事はありません。
こんな感じで、マクロの『中身』が最終的に問題となって重くなる訳ですが、一番重いものでも1M程度のデータです。私が陥ってしまったのは、元々300k程のデータが40Mにも増大してしまう症状でした。そうなると、起動にも時間がかかり、非常に不便極まりなくなります。
まあ、慣れている方であれば、この時点で『そんなのわかんねぇの?』となってしまいそうですが、もしかして悩んでいる方がいれば、と記事にしたので、その辺のわかる方はスルーして下さい。
今回の問題解決
結論から言ってしまうと、『過剰にセルの設定をしてしまった』です。
例えば、上記のデータの場合顧客名簿等が考えられますが、『個人情報だし、下手に表示したくないなぁ』といった事があるかも知れません。そんな時に簡単なのが、シートを保護しておいてクリックしてもデータを表示させな状態にした上で、背景・文字色共に白にする。なんてのが一番思いつき易いでしょう。他にやり方もありますけどね。
で、文字色や背景を将来的な事を考えて『先にマクロの設定に組み込んでおいたら楽じゃね?』としてしまった場合が、こんなデータ過多な状態に陥り易くさせてしまいます。
test.xlsx : 全くフォントに関していじっていないデータ
test1.xlsm : A~Cの10,000行までをフォント、背景の設定をしたデータ
test2.xlsm : A~Cの100,000行までをフォント、背景の設定をしたデータ
となっています。
つまりセルのデータを入力していなくても背景や文字色を設定しただけでExcelのデータは重くなってしまうのです。
これを知らずにマクロを組んでいると、『そんなにデータ入ってるか!?』という位重いデータになってしまい、起動時や保存時に余分な時間を取られてしまいます。
では、解決するにはどうしたら良いのか?
こういった装飾データは、必要以上に使用しないという事です。今回のデータで言うならば、起動した時に装飾を行い、保存する時に装飾データをクリアしてから保存、といった具合でしょうか?
『マクロを無効にしたら見られちゃうじゃねーか!』って意見も出そうですが、そこは、他の方法で対処可能です。まず、使用するデータは極力スマートに。元々が重いとPCの能力でExcelが止まったりもしますから不便極まりないですからね。
では、この辺で。