負荷がかかる処理って?
「ちょうどいい機会だ。マクロの高速化について、話してやろう」
「マクロの高速化…だって?」
「以前に少し話したことがあるけど…、
セルに対する処理、特にセルに値を書き込む処理というのは、とても負荷がかかる処理なんだ。
セルにはたくさんのプロパティがあるだろう?」
「うん。値のほかに、背景色や罫線…フォントの書式とか…いろいろあるね」
「そうだ。セルに値を書き込むとき、どうしてもExcelによるそれらプロパティへの評価が発生する。
つまりセルに対するアクセスが多いほど、マクロの実行時間が長くなるということなんだ」
星くんは、改めて自分の書いたコードを見直しました。
「そっか…。俺の書いたコードは3000件を超えるデータの…
しかも最大10件の内示データを、毎回セルに書き込みにいってるんだよな…
そりゃ、遅くなるはずだよ。
…でも、セルに値を書き込まなければ、CSVのデータを取り込めないし…
いったいどうすりゃいいんだい?」
八木くんは待ってました!といわんばかりに、メガネをクイッと持ち上げました。
「そのとおりだ、星。
セルに値を書き込まなければ、データを取り込むことはできない。
問題はセルに値を書き込む回数なんだ。
…そうだな、例えば…ある書類を、たくさんの会社に郵送しなければならない業務が発生したとする。
星、おまえならどうする?」
星くんは心もち首をかしげます。
「…そうだなあ。
まず書類を用意して必要な数の封筒に入れる。
それぞれに宛名を書いて切手を貼り、まとめて郵便局に持って行くよ」
「じゃあ、もしもだよ。
おまえの部長が、封筒を1つ作るたびに郵便局に持って行け!といったら…どう思う?」
星くんはプッと吹き出しました。
「あの部長が、そんな非効率的なことをいうわけないよ。
…はーん、なるほど。
要するに、俺の作ってきたプログラムは、封筒を作るたびに郵便局に持って行く…
そんな非効率的な処理をやっているというわけだな…八木?」