- - PR -
Excel改ページ(HPageBreaks.Add)処理速度の改善について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-03 21:26
はじめまして、えびまよと申します。
Excelにて帳票出力を行うプログラムを作っています。 帳票の改ページを以下のコードでひとつづつ指定しています。 wkSheet.HPageBreaks.Add((Excel.Range)wkSheet.Cells[row, 1]); ここで処理速度に関して問題がでてきました… 20件程の改ページでも、なぜか処理時間が14秒もかかってしまいます… ※上記コードで、20回、HPageBreaks.Add()するだけなのですが… ※他の処理(セル値設定等)は1、2秒で完了します。 そもそも、HPageBreaks.Add()での改ページは、 これくらい処理時間がかかるものなのでしょうか。 もしかしたら、非効率的な改ページ指定をしているのかもしれません… どなたか、良い方法をご存知の方がおられましたら、 お手数ですが、ご教授頂けないでしょうか。 | ||||||||
|
投稿日時: 2006-07-03 22:00
そのくらいかかって普通だと思います。
また、回避方法もたしか無かったと思います。 そもそも、HPageBreaks, VPageBreaks 自体の動作すら非常に怪しいですしね・・・。 # 改ページプレビュー にしてやって、ActiveCell を最終のところに # もっていかないと count が正常にならないとか。
ということで、Excelにて帳票出力 は非常にお勧めではありません。 # 他にも文字切れとか問題発生しますしね。 # Vista & Office 12 以降なら解決されるのかなぁ・・・ WPF のおかげで・・・ [ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-07-03 22:05 ] | ||||||||
|
投稿日時: 2006-07-04 11:59
ちゃっぴさん、書き込みありがとうございます。
引用---------------------------------------------------------------------- そのくらいかかって普通だと思います。 また、回避方法もたしか無かったと思います。 そもそも、HPageBreaks, VPageBreaks 自体の動作すら非常に怪しいですしね・・・。 # 改ページプレビュー にしてやって、ActiveCell を最終のところに # もっていかないと count が正常にならないとか。 -------------------------------------------------------------------------- そうですか…Excel側の動きはどうしようもないですものね… では、考え方を変えて、「HPageBreaks」を使用せずに改ページ制御を行う事はできないのでしょうか。 予め、帳票Excelテンプレートに、改ページ制御を仕込んでおくなど… どなたか、そのような回避方法をご存知の方がおられましたら、ご教授頂けないでしょうか。 | ||||||||
|
投稿日時: 2006-07-04 12:32
でもこの方法だと自分の好きな位置にできるわけじゃないんで、手動で制御したい場合の回避方法はないと思われ。(ちゃっぴ氏がすでに書いてるけど) [ メッセージ編集済み 編集者: ぶさいくろう 編集日時 2006-07-04 12:33 ] | ||||||||
|
投稿日時: 2006-09-11 12:06
・Excel2002,2003 では、、「改ページ」が表示されているとスクロールが遅い(その他動作も遅い)現象が発生します。(MSも確認している様です。)
・Excel2000では、この現象は発生しません。 文書番号 : 418322 文書タイトル : [XL2002]改ページが表示されているとスクロールが遅い http://support.microsoft.com/kb/418322/ja 回避方法. 改ページ線を非表示にする ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Excel 2003 を起動し、現象の発生するファイルを開きます。 2. [ツール] メニューをクリックし、[オプション] をクリックします。 3. [表示] タブの [改ページ] のチェックをオフに設定し、[OK] をクリックします。 4. [ファイル] メニューをクリックし、[上書き保存] をクリックします。 5. 再度OPEN後、操作を行い、現象が回避されるかご確認ください。 また、VBAで以下の指定でも回避できます。 ActiveSheet.DisplayAutomaticPageBreaks = False 試してみてください。 ご参考まで。 [ メッセージ編集済み 編集者: パンダ 編集日時 2006-09-11 12:48 ] |
1