Excel VBAの高速化

posted in: 未分類 | 0

こんにちは。シイノです。
最近、Excel VBAの仕事をする機会がありました。
この業界は長いですが、VBAの仕事は初めてです。
自端末で実行するプログラムなので、気になるのは「速度」ではないでしょうか。
と言うことで、実際に計測してみました。

プログラムの概要

設定用のファイルにデータファイル、出力ファイル名等を設定、
出力ファイルにデータを転記する処理です。

実行

まずは、高速化など考えず実行してみましょう。
100行程度のデータを加工しながら読み込みます。
結果は1016秒(約17分)です。
これを成果物として提出したら、お客様に怒られかねません。

高速化

VBAの高速化と言えば、「無駄な表示を止める」こと。
それでは、「Application.ScreenUpdating」を追加していきましょう。

確認

修正したVBAを実行してみましょう。
条件は先ほどと同じです。
結果は960秒(約16分)です。
多少早くなりましたが、誤差の範囲と言われても仕方がありません。

高速化その2

「無駄な表示を止める」だけではダメなのでしょうか?
そう言えば、出力ファイルは非表示にするために別オブジェクトにしていました。
このため、別オブジェクトに対しても「Application.ScreenUpdating」を追加します。

確認その2

出来ることはすべてやったはず…と言うことで、再度VBAを実行します。
勿論条件は同じです。
結果は620秒(約10分)です。

まとめ

最終的には、実行時間を7分程度削減できました。
今回作成したVBAでは、この手法は有効ということが分かりましたね。
勿論、高速化の手法はこれだけではありません。
VBAの高速化については、様々なサイトで紹介されていますので、
もっと速く!と言う方は、他の手法も探してみてください。

LINEで送る
Pocket