印刷ページ数を取得する Excel編 Part1

2001.11.15

データベースのテーブル定義書を生成するツールを作った際のことである。それまでは手作業で作成していて、チェックのため数週間会議室を占有/数人を作業にあてがう、ということを毎年行っていた。
これを、データベース自身の定義から取得し、Excelの表にまとめていくツールを作成するようにした。
このときに見つけた問題。

納品物には通しのページ番号を振る必要があった。当初、Excelに標準であるフッタにページ数を付与する方法で対応しようとしていたが、うまくいかないケースがあった。その原因を追及した際のメモ。

---------------------

Excelで印刷プレビューをした後は、シート上に垂直/水平の改ページ位置が線で表示されるようになる。
この改ページの線の数のうち、印刷範囲のものは、シート名のプロパティで取得できる。
 [シート名].VPage  縦の改ページの線の数
 [シート名].HPage  横の改ページの線の数

1ページに収まる場合は VPage, HPage とも 0 になる。

よって、ページ数は
 ( VPage + 1 ) と ( HPage + 1 ) の積
で求まる、と書籍やネット等で紹介されている。

しかし、試してみると間違った値にあるケースがあった。

データベースよりレコードを取得し、その結果をExeclシートに貼り付け、そのレコードが出力された行まで書式を調整(罫線や行の高さ)するものを作ったことがある。

このとき、印刷プレビューをしたとき、ページからぎりぎりあふれないが、後ほんの少しであふれるぞ、というページがあると、上記の ( VPage + 1 ) と ( HPage + 1 ) の積 では想定より数字が大きくなることがあった。つまり、「実ページ数より計算されたページ数が大きい」という状態だ。


やむなくほかの方法を使ったのだが、それはこの記事の Part 2 にて紹介する。