エクセルの改ページ制御

解決


ぽてと  2006-10-05 10:22:23  No: 133563

現在VB.NET2005で、エクセルにデータ出力する処理を作成しています。

改ページ制御を行いたいのですが、自動制御の改ページ位置を取得できず困りはてております。

掲示板を参考にさせていただき、手動で改ページ位置を設定することは
できたのですが、取得ができません。
複数ページ存在するシートでも改ページ数が1になってしまいます。
(自動改ページ位置から、条件分岐させ改ページ位置を設定するため
  自動改ページ位置の取得が必要となります)

 Dim xlWorksheet As Excel.Worksheet
 Dim xlSheets As Excel.Sheets
 dim wkCnt as integer                '改ページ数

 xlWorksheet = DirectCast(xlSheets(シート番号), Excel.Worksheet)
 wkCnt= xlSheets.HPageBreaks.Count

.HPageBreaks.Countが1ページの場合は0、
複数ページの場合は1になります。
.HPageBreaks.Countで改ページ数を取得できると考えていたのですが
誤りでしょうか?
ご教授お願い致します。


特攻隊長まるるう  2006-10-05 20:19:35  No: 133564

> .HPageBreaks.Countで改ページ数を取得できると考えていたのですが
> 誤りでしょうか?
誤りです。[Excel VBA]のヘルプで確認してください。
対象シートの水平な改ページの数になります。

> .HPageBreaks.Countが1ページの場合は0、
1ページなら改ページしてないですから合っているのでは?
> 複数ページの場合は1になります。
3ページ以上でも1なら何かが間違っているのでしょうが。

過去ログを検索すれば Excel のバージョンによって使えない
ような情報もありますし、バグ情報もあります。全て確認してください。


特攻隊長まるるう  2006-10-06 02:41:46  No: 133565

追加情報として、Excel2002のヘルプ
[HPageBreaks コレクション オブジェクト]
のページには印刷範囲の設定によっては
無効になるらしきことも書いてありますね。

 # 実際の動作は確認してみないと分かりませんが。


ぽてと  2006-10-08 07:26:13  No: 133566

特攻隊長まるるうさん、ご教授ありがとうございます。

>> 複数ページの場合は1になります。
> 3ページ以上でも1なら何かが間違っているのでしょうが。
3ページ以上でも1がリターン値となるので困っていました。

アドバイスを参考にマイクロソフトのヘルプや、サポートページを検索したところ、
原因がわかりました。

<マイクロソフトサポートページから抜粋>
http://support.microsoft.com/default.aspx?scid=kb;ja;210663
垂直方向の改ページ位置または水平方向の改ページ位置が、表示可能なウィンドウよりも右側またはブックの表示可能なウィンドウよりも下側にあり、画面から見えなくなっている場合。

ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加