【VBA】高速化

そもそもの話

年末年始に引きこもる準備で忙しいjimです。どうも✋

今回は、前回に引き続き『高速化』についてです。

そもそもの話、何で描画やらイベントマクロの停止なんてことをしないといけないかっていうと、Excelを使うからじゃね?Cellを使うからじゃね?っていうね。っていう話よ。

先ず、Cellを使った処理って遅いのね。だから、使えば使うほど処理時間って長くなるわけ。。。

で、殆どの仕事っていうのは過程なんてものはどうでもよくて、最終的に成果物があればよかったりするわけじゃん?

うん。要するに、VBA使えるなら無理してExcel使う必要ないんじゃね?ってこと。

メンテナンス?知らん。個人で作ったマクロなんて、使えなくなったらポイでいいでしょ。

最悪、手動でも効率よくできるようにしておいて、そのマニュアルを残しといたらいい。また誰かが自動化してくれるさ。

 

配列を使う

例えば、Excelのセル同士で何らかの計算をして、その結果を新しいブックにエクスポート。なんてこと、、、よくありますよね?

以下のコードは新しいブックを開いて、単純に適当な文字列を入力しcsvファイルとして保存するものです。ただし10万行。

Excelのイベント類は全て停止させているのにも関わらず。。。

結果は10秒以上かかります。

次は配列を使います。一旦、配列に10万行分の文字列を格納します。その後、一括で配列をシートにエクスポートしてやります。

配列を使っただけなのに、かなり高速化できました。

あまりにも処理時間が長いものは、イベント類を停止させるよりも先に見直さないといけないことがあるかも?

 

アプリケーションを使わない

そもそもExcelを使わないようにした方が、ダンチのレベチで高速化できる。

Excelのイベント類停止なんて意味がないので不要。

 

 

はい、ってことで高速化についてでした。

VBAプログラム組めるなら、Excel使わなくてもいいことが沢山あると思います。

どうしてもExcelでないとダメ。ってもの以外は、なるべくVBAだけで処理してみては如何でしょうか?

したら、またねぇ✋