VB/VBA 等から Excel にデータを書き込む場合、表が大きくなるような変更 (UsedRange の外にデータを追加するとか) でなければ速度的な問題はない、と思っていたのだが、そうではないようだ。
Excel で作成したフォーマットに、上から下へとデータを流し込んでいく処理で、1 行あたりの書込みにかかる時間が 1 次関数的に増えていく (総時間でいえば 2 次関数的に増えていく) 現象に気付いた。具体的には、1 行目は数十ミリ秒で書き込めたのに、1500 行目では 1100〜1200 ミリ秒程度かかった。
調べてみたところ、印刷範囲を解除するとこの状況がおきなくなった。よくわからない。1 データ追加するたびに、何かを全データ対象に再計算しているのだろうが、一体何を?
謎は解けてはいないが、とりあえず、追加する処理の前に印刷範囲を退避・クリアし、追加完了後に設定しなおすというのを入れてみたところ、速くなった。