2007年10月11日木曜日

第49回目 ちょっとした小物、印刷編3

○第49回目 ちょっとした小物、印刷編3

 最後の"5.複数のシートが一括で印刷できる機能"です。
 これもよく使い機能です。エクセルはシート内にいっぱい詰め込んでも可能だし、シートを分けて作っても大丈夫です。算定過程はシートに詰め込んで、結果の表などはシートを分けて細かく区分するというのが多いようです。
 ですから、このシートからこのシートまでページをつけて印刷したいということがよくあるということです。特に最近は色つきが多くなっているので、カラープリンタで印刷したいということになります。プリンタの選択は前回やりましたので省略します。
 入力すべきパラメータは、現在のシートを含めて印刷したいシート数と初めのページとなります。
 今回のシートはグラフシートを含みますので、結構簡単になります。
 以前にやりましたが、シート数は sheets.countに入っていますし、現在のシート番号は、ActiveSheet.Indexに入っています。
 シート番号でシートを指定するのは、 Sheets(i).Select となります。
 次のシートへのページ番号の引継ぎの仕方についてですが、現在では複数ページになる場合のそのページ数の取得の仕方がわかりません(2007のせいかもしれません)。それゆえに、1シート・1ページという前提とします。すると、次のシートを印刷する際に、初めのページ数を+1ずつしていくことになります。
 複数ページへの対象は、その部分だけで印刷して、前後を分けて印刷するというやり方です。全部が複数ページだったら、この機能は意味がありません。

 主な構造は、
   j = InputBox("印刷したいシート数の入力  ", , 10)
    :
   For i = sh0 To sh0+j-1
    shees(i).select
    ActiveSheet.PageSetup.FirstPageNumber = 1+i-sh0
    〈印刷〉
   Next
    :
 最初から欲張らずに、少しずつ機能を追加したいったほうがいいと思います。最初は複数のシートの印刷だけ。それができたら、ページ数を入れる。それが出来たらプリンタの選択を入れる、という具合にです。
 テストの段階で一シートにかなりの枚数が打ち出される場合は、前々回のやり方で、印刷ページ数を限定するといいですね。〈ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1〉
 また、テスト段階は、印刷の代わりにプレビューでもうまくやれるのかもしれません。

 ということで、複数シートの印刷は大変なように見えて、それほど大変ではないということがわかります。ページ数、プリンタの選択などの機能がないとしても、便利な機能だと思います。
 ただし、シートにいろいろと詰め込むタイプの人の場合は、ページ数指定の印刷、指定範囲の印刷のほうが便利です。ニーズに合わせて使い分けてください。
 (筆者も考えてみれば詰め込みタイプのようです)

0 件のコメント: