Access 複写式の帳票を1ページ内に印刷する方法

Access

こんにちは。じじグラマーのカン太です。
衰えいく能力に怯えながらも、現役で週末プログラマーをしています。

今回の記事は、Accessのレポートで納品書など複写式の帳票(本帳票と控えのようなもの)を印刷する方法を紹介します。

ページヘッダーに1ページ分のレイアウトを指定する

例えば、「受領書」と「納品書」「納品書(控)」を1ページ内に印刷し、切り取って使用する場合のレイアウトを考えます。

その場合、まず「ページヘッダー」の欄を1ページ分拡げ、その中で帳票全体のレイアウトを指定していきます。標題や各項目ののヘッダー、表や罫線などをかきいれていきます。

MoveLayout に False を指定する

ページヘッダーのフォーマット時のイベントプロシージャに、「Me.MoveLayout = False」と指定します。

Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer)
    Me.MoveLayout = False
End Sub

こうすることによって、ページヘッダーを印刷した後に印字開始位置が変わることを防ぎます。つまり、ページヘッダーを印字した後、詳細セクションをページの先頭から印字し始めることができます。

明細行をレイアウトに合わせて指定する

続いて明細行を指定します。詳細セクションに、打ちたい数だけ(今回は3回)明細行を指定します。ヘッダーのレイアウト位置に合わせて配置してください。

また、ページヘッダーと同じように詳細セクションに「Me.MoveLayout = False」と指定します。

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
    Me.MoveLayout = False
End Sub

こうすることによって、明細行を印字した後に印字位置が動くことを防止します。

他の用途での使用方法

以上で「受領書」と「納品書」「納品書(控)」(明細は全て同じ内容)を1ページ内に印刷することができます。

この方法を使えば、見積書など表形式で1ページ内全ての欄に罫線が引かれている帳票なども簡単に作成できます。

この方法を知るまでは、印字明細数が少ない場合は印刷用のワークテーブルに必要分だけ空行(各項目は全角スペース)を挿入する、なんていうまどろっこしいことをやっていました。

まとめ

いかがでしたでしょうか。今回の記事では、1枚の紙に複数の帳票(明細は同じ)を印刷する方法を紹介しました。

製造業などではかかせない「納品書」。1枚の紙に納品書とその控えを印刷して切り取る、というところも多いのではないでしょうか。

この方法を知るまでは、帳票内にサブレポートを組み込み、罫線やヘッダー項目はオーバーレイを使って印刷する、という方法で逃げていました。サブレポートやオーバーレイを使うと、レイアウトの位置合わせだけで、気が遠くなるような作業が発生します。こんな方法があったなんて・・

みなさまの参考になれば幸いです。

コメント