アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルにデータを表示させて印刷するときに、
一続きのデータがページをまたいでしまうのですが、
またいだ時にページの一番はじめに、データの項目を表示させたいと思っています。

PrintTitleRowsを使用しようと思いましたが、
データの項目→データ、データの項目→データというようにエクセルシートに表示されているため、もし、丁度ページが変わったときにうまくデータの項目が次のページの1列目にくるとデータの項目がダブってしまい、使用することができません。

他の方法を考えてみたのですが、その方法では現在のページ番号を取得する方法か現在のページの最終行(データが最終行に入力されていない場合も含む)を取得する方法を知らなくては実現することができません。
いろいろ調べたのですが、見つからず、このような方法がないのかもしれません。

うまく状況が説明できずすみません。
もしご存知の方がお見えになりましたら教えてください。
また、何か他によい方法をご存知の方がお見えになりましたら教えてください。

A 回答 (2件)

ページの先頭に表題や項目(列)見出しを入れる場合


(1)エクセルのPrintTitleRowsを使う
この場合は最初以外は項目見だしをいれないのが普通でしょう。質問のケースはこれを入れていると言うことですか。
そのため邪魔になると言うことでしょうか。
であれば削除するか、非表示にするのが手でしょう。
項目見出しを何かの文言・印でプログラムで割り出せるなら、その行をプログラムで非表示にすることも出来るでしょう。
(2)PageBreakで改ページし、改ページ後に
項目見出しを(手動でということになる)いれる。
と言うか項目見出しの行の前で改ページを入れる。
紙は多少無駄が起こるかもしれない。
(3)VBAでPrintAreaを別途編集し直し
項目見出しを最上部にセットする。
すると普通は毎ページ「一定行数」+見だし行数となろう。その場合も中間の項目見だしは邪魔になる。
(4)(2)の場合PageBreakの位置をVBAで
取得し、その後に項目見だしを印刷し、明細行を打てばよいが、Printoutでは、改ページしてしまうので不可能。行印刷して改ページしないメソッドが判れば可能。
>現在のページの最終行(データが最終行に入力されていない場合も含む)を取得する方法
これはプリンタの動作の最終行と言う情報をシステムに送らせないといけないが、VBAレベルでは多分不可能でしょう。APIでも難しいのでは。プリント動作はプリンタドライバに任せているのだと思う。
    • good
    • 0
この回答へのお礼

様々な方法を教えてくださり、ありがとうございます。
項目の上に表示データごとにことなるもう一つの見出しがつくため項目を非表示にすることは難しいと思いますが、それぞれ教えてくださった方法を試して見たいと思います。
ありがとうございました。

お礼日時:2004/12/09 09:40

私なら印刷を以下のようにマクロ化します。


1)2番目以降のデータ項目の行を非表示にする
2)1番目のデータ項目をタイトル行にして印刷する
3)非表示にした行を表示に戻す。


現在のページ番号を直接知るのは、無理かもしれませんが、間接的にRangeオブジェクトのPageBreakプロパティかHPageBreak オブジェクト(VPageBreakも必要かもしれません)の位置の記録と集計を使えば可能じゃないかとは思います。
    • good
    • 0
この回答へのお礼

お答えいただき、ありがとうございます。
やはり現在のページ番号を直接知るのは無理なんですね。
この方法を試して見ます。
ありがとうございました。

お礼日時:2004/12/09 09:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています