2014/10/11

Excel VBA HPageBreaks.Count を早くしたい方必見

 ExcelVBAに色々悩まされている筆者です。
 今回とあるページ調整で改ページ数の制御にHPageBreaks.Countを参照してみたのですが、参照するだけなのに数秒を要してしまい、少々凝ったロジックに組み立てるには非常に足を引っ張る原因に。....
 どうも色々と調べてみたのですが、なかなか改善策に当たるものが見られず諦めかけたのですが、ありました方法が!!

問題のコード1 cntに改ページ数を代入しているだけなのに、5秒程度かかります。
Dim cnt As Integer
cnt = targetSheet.HPageBreaks.Count

問題のコード2 gtypeに改ページタイプを代入しているだけなのに、8秒程度かかります。
Dim gtype As Integer
gtype = targetSheet.HPageBreaks(1).Type

 ネットで検索しても残念ながら何も情報がなかったのですが、なんとCSVファイルや保存していないファイルに対して処理を行うと非常に時間がかかるのですが、保存後に行うと、0.3秒程度に処理時間が短縮されます。
targetSheet.Parent.SaveAs FileName := "ほげほげ.xlsx"
cnt = targetSheet.HPageBreaks.Count
gtype = targetSheet.HPageBreaks(1).Type
 これ全部やっても1秒に収まるような計測結果になりました。当たり前といえば当たり前かもしれませんが、いや悩んだ悩んだ。
 みなさんも同様の事象で困っていましたら参考にしてみてください。

0 コメント:

コメントを投稿