Accessで文字の間隔を調整する。

こんにちは! イマジネットPCサポートの橋崎です。

今回もお客様から頂いたご依頼内容から記事を書いていきたいと思います。

好評でした。

前回、譲渡証明書と委任状をパソコンから印刷できるようにAccessを使用して作成させて頂いた内容を記事にしたのですが、このシステムが意外に好評で、それならばこれもパソコンから印刷できないかとご相談がありました。

その書類がこれです。

これは自動車の登録処理などを行うために陸運局へ提出する書類で業界ではマークシートと呼ばれています。

正式には第1号様式と言うもので、必要項目を記入して提出します。

以前の記事はこちらからどうぞ

第1号様式は明確に印字位置が定められています。

以前の記事にも書きましたが、譲渡証明書と委任状印刷は非常に簡単に作成しました。

フォームにデータを入力してその内容をレポートに出力するだけです。以前とは違い入力項目は多くなりますが、基本的には同じ要領でいけそうです。

よね?

しかしマークシートを確認するとそうもいかないようです。

では、どの部分がそうなんでしょうか、一緒に見てみましょう。

例えば自動車の登録番号を記入する箇所を確認してみるとこのようになっています。

左から陸事名「大阪・奈良など」次に種別「544」次にかな「や」最後に車番です。「1234」

これらをそれぞれの枠内に印刷する必要があります。

なぜならこれはマークシートですから機械読み取りをするので、枠外であれば機械が認識しないんですね。

印字位置を合わせるにはどうすればよいのでしょうか。

登録番号を枠内に印字するにはどのような仕組みを考えればよいと思いますか?

おそらく入力したデータをレポートにそのまま印字すればAccessの初期値では文字間隔が書類と比べても狭く全体的に左によってしまい、2文字目以降はとても枠内には印字できないでしょう。

それに文字の大きさも変更する必要があります。

更に追い打ちですが、残念な事にAccessには文字間隔を調整する機能はありません。

ホンマにありません。

1文字ごと出力します。

ないものは作るしかありません。

当店では以前に路線運送会社の送り状を印刷するシステムを作成した時に同じような事を行った経験があります。

それを応用しましょう。

作業の流れ

先に何をするのか流れをご説明します。

内容は簡単です。

ただ非常に手間がかかるだけです。

  • フィールド内の文字を抽出する関数を設定する。
  • 抽出した文字を印字位置に配置していく。

では、これらについて詳しくご説明しますね。

フィールド内の文字を抽出する関数を設定する。

今回はExcelでもお馴染み文字を抽出する「LEFT」「MID」関数を使用します。

この関数はAccessでも使用できます。

サンプルとしてファイル名「データベース1」ファイルを用意しました。

データベース1ファイルにはテーブルとレポートをそれぞれひとつ用意しました。

テーブル名は「テーブル1」としてフィールドは2つ作成して「ID」と「テストフィールド」と名前を付けました。

テストフィールドに「あいうえお」と入力しておきます。

では、この情報をレポートに出力してみるとこのようになります。

ここまでは通常の操作になりますね。

先程も説明したように出力されている「あいうえお」の文字間隔は調整できません。今回のようにマークシートの枠内に配置するにはフィールドの文字を一文字ごとに出力する必要があります。

それではその手順を見てみましょう。

レポート内に新たにテキストボックスをひとつ配置します。

配置したテキストボックスのコントロールソースにこのような関数を設定してみますね。

=Left([テーブル1.テストフィールド],1)

印刷プレビューで確認してみると「あ」だけが表示されていますね。(既存テキストボックスにはエラーが表示されていますが、今回は気にしません。)

次に2文字目の「い」を表示します。

同じようにテキストボックスを配置して今度はコントロールソースにこのような関数を設定します。

=Mid([テーブル1.テストフィールド],2,1)

印刷プレビューで確認します。

思った通りの結果となりました。

メモ

Left・Right・Mid関数について簡単に解説しておきます。

Accessではこの関数を使用する事でフィールド内の開始文字や文字数を指定して表示する事ができます。

Left・Right関数については抽出対象開始位置を文字の左側からと右側からの指定と文字数の指定ができます。

テストテーブル1のテストフィールド内にあるデータ左から1文字目を抽出する。

=Left([テーブル1.テストフィールド],1)

結果は「あ」となります。

引数を「2」に変更すると

=Left([テーブル1.テストフィールド],2)

結果は「あい」となります。

Mid関数については左からの文字位置と文字数を指定する事ができます。

テストテーブル1のテストフィールド内にあるデータ左から2文字目の1文字を抽出する。

=Mid([テーブル1.テストフィールド],2,1)

結果は「い」となります。

第2引数を「2」に変更します。

=Mid([テーブル1.テストフィールド],2,2)

結果は「いう」となります。

尚、Left・Right関数は抽出開始文字の指定は左・右のみなので、間の指定はMid関数を使用する必要があります。

抽出した文字を印字位置に配置していく。

それでは、テキストボックスを5つ用意してそれぞれに関数を設定します。

=Left([テーブル1.テストフィールド],1)
=Mid([テーブル1.テストフィールド],2,1)
=Mid([テーブル1.テストフィールド],3,1)
=Mid([テーブル1.テストフィールド],4,1)
=Mid([テーブル1.テストフィールド],5,1)

テキストボックスをこのように配置して

印刷プレビューで確認してみると文字間隔を非常に広く調整できました。

あとはこれを必要分作成して位置を調整していきますが、考えただけでも手間がかかりますよね。

あとがき

タイトルに調整と書きましたが、調整と言うかチカラ技的な内容になったと思います。

Left・Right・Mid関数についてはExcelとの使い方は若干違うと思いますが、詳しくはお調べください。

今回は納品までに少しお時間を頂いているので、少しづつ作成していこうと思っています。

最後になりますが、この記事では文字の位置調整をメインに解説しています。テーブルにデータがない場合などの条件分岐の設定などの解説は省いている事はご了承ください。

それでは、お疲れ様でした。

追記

とりあえず、レポートが完成したのでデザインビューを確認してください。

印字位置調整は大変でしたが、ピッチの位置は共通していたので、途中からコピペコピペでスイスイと完成しました。

ご注意

記事内容についてのご質問の受付は時間が取れませんので行っておりません。

ご自身が使用しているパソコンの状態・環境により、同じような症状であっても同じとは限りません。したがって記事に書かれている内容を行う事で必ずトラブルが解消されるとは限りません。またこの記事を参考に作業される場合は自己責任でお願いします。作業された場合での損害や障害が発生しても当店は一切責任は負いませんのでご了承下さい。

この記事の内容は投稿日時点での内容です。時期によっては仕様などの変更により、この記事のとおりではない場合もございます。