MS Access Tips/Sample and VBA and Blog customize etc...

定型枠に一文字ずつはめ込み印刷

役所などに提出する書類で、定型枠に一文字ずつはめ込んで記入する形式のものがあります。身近なのでは、はがきの郵便番号を入力する枠のようなものです。例えば、下記のような書類。

RptFixBox.png

レポートでこのような定型枠にはめ込むいくつかの方法を紹介します。

方法1

まず、簡単なのは、コントロールソースでMid関数で1文字ずつ分割する方法。郵便番号なら、7つのテキストボックスを用意して、各コントロールソースを
=Mid([Mid],1,1)
=Mid([Mid],2,1)
=Mid([Mid],3,1)
=Mid([Mid],4,1)
=Mid([Mid],5,1)
=Mid([Mid],6,1)
=Mid([Mid],7,1)

方法2

郵便番号ぐらいなら、これでもいいのですが、枠の数が多いと、コントロールソースを一つずつ設定するのは結構面倒です。そこで、テキストボックスだけ配置しておいて、印刷時イベントでVBAで代入すると少し楽できます。

フィールド「郵便番号」を非表示のテキストボックスとして配置します。テキストボックスを14個( tel1, tel2・・・tel14 )配置します。あと、フィールド「資本金」は右寄せの例です。

方法3

これもテキストボックスの名前を連番になるように変更するのが面倒です。貼り付けたとき自動で付けられる テキスト1, テキスト2, ・・・という名前をそのままつかってもいいのですが、それにしても大量のテキストボックスを配置して位置調整するのは結構面倒です。

枠は、四角形コントロールで作成して、その上にテキストボックスを枠全体を覆うように配置します。

コントロールソース =Format([口座番号],"@@@@@@@@@@")
背景スタイル 透明
文字配置 均等割り付け

フォントは等幅フォントにしてください。また、文字が枠の中央にくるようにテキストボックスのサイズを小さめに調節する必要があります。上記は右寄せになりますが、左寄せの場合は、コントロールソースを
=Left([口座番号] & String(" ",10), 10)

これはコントロールソースの設定は一つのみなので、少し楽ですが、やはり大量のコントロールを配置する必要があるので面倒です。

方法4

そこで、VBAでLineメソッドとPrintメソッドで描画する関数を作成してみました。下記のコードを表示モジュールに記述します。

上記で紹介した方法はすべてサンプルに入っています。

サンプルファイルが下記からダウンロードできます。
RptFixbox_07.zip (Access 2007-2010 形式 - 28kb)
RptFixbox.zip (Access 2002-2003 形式 - 30kb)
RptFixbox_2k.zip (Access 2000 形式 - 28kb)

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/127-fce65e1a
該当の記事は見つかりませんでした。