ホチキス先生の「プログラマーと呼ばれたい」

InfoPath & SQL Server !

Access で年賀状のあて名印刷をするコツ

leave a comment »

この時期、1年間使わなかった年賀状印刷ソフトを久しぶりに起動し、印刷に四苦八苦というところも多いだろう。ところが年に1回しかつかわないソフトの使い方は、どうしても忘れてしまいがちになるのではないか。また今年中にプリンタや周辺機器を買い替えてアプリケーションが対応しなくなったり、もしかしたら昨今のことだから、家に何台もあるパソコンのうち、どれにソフトをインストールしてあったか忘れてしまっている、といったこともあるかもしれない。またそれが調子が悪くて捨ててしまっていた、といったこともあるだろう。

年賀状を印刷するには、いわゆる「宛名印刷ソフト」というものを使う人が多いだろうが、宛名印刷ほど Access に得意な分野はない。そこで、住所データをアクセスにインポートし、宛名印刷をするコツを紹介する。ここでは Microsoft Office Access 2007 で説明するが、他のバージョンでもほぼ同じだ。

まず住所データを用意する。もし宛名印刷ソフトを使っているならデータが取り出せるはずだ。宛名印刷ソフトからデータをエクスポートすると、たとえばこのようなデータになる。これはCSV 形式のデータで、ファイルのフォーマットはテキストファイルと同じ扱いになっている。宛名印刷ソフトによってはエクセル形式でデータを取り出せるものもあるだろうし、データがなければエクセルで作ってもいいだろう。

Access年賀状_001 

<fig.1 : ある宛名印刷ソフトからエクスポートした住所データ>

これを Access にインポートする。まず Access を起動したら「空のデータベース」を作成する。作成する場所は「ドキュメント」で、ファイル名は「年賀状印刷」とでもしておこう。

Access年賀状_002_mid_640

<fig.2 : Access を起動して「空のデータベース」を作成する>

Access年賀状_003_mid_640

<fig.3 : Access のファイル名を「年賀状印刷」として作成する>

Access が起動し、テーブルのデザイン画面になったら、テーブルは作らなくてよいので保存しないで閉じる。次にメニューから「外部データ」のタブを開き、「テキストファイルのインポート」をクリックする。もし用意した住所データがエクセルの場合は「Excel ワークシートのインポート」をクリックする。

Access年賀状_004_mid_640

<fig.4 : テキストファイルのインポートをする>

テキストファイルのインポートを実行すると、インポートするデータを指定するように求められるので、CSV のテキストファイルを保存した「ドキュメント」を指定して、ファイルを選択する。

Access年賀状_005_mid_640

<fig.5 : インポートするテキストファイルを指定する>

Access年賀状_006_mid_640

<Fig.6 : インポートするテキストファイルを保存した「ドキュメント」フォルダからファイル名を選択する>

ファイル名を指定したら「テキストインポートウィザード」がはじまる。このウィザードでは、データの形式を自動で読み取り、適切な形式に判断してくれるので、基本的には「次へ」の連続でうまくいく。ただ、郵便番号のフィールドは、場合によっては数値と判断される場合があるので、テキストになっていることを確認しよう。もし数値と判断されてしまったら、たとえば番号の最初の数字が「0」の場合、その「0」が失われて桁が小さくなるし、後でやる「郵便番号の前と後ろの切り離し」がやりにくくなる。

Access年賀状_007_mid_640

<fig.7 : テキストインポートウィザードでデータ区切りを指定する>

Access年賀状_008_mid_640

<fig.8 : データインポートウィザードでテキストの保存形態を確認する>

Access年賀状_009_mid_640

<fig.9 : データインポートウィザードでデータの型を確認する>

データの型、特に郵便番号のフィールドが「数値」ではなく「テキスト」になっていることを確認し、次へすすむと主キーの設定になる。ここでは「主キーを自動的に設定する」にして連番を自動で割り当てることとする。

Access年賀状_010_mid_640

<fig.10 : テキストインポートウィザードで主キーを自動的に設定する>

インポートウィザードが終了すると、インポートしたデータのテーブル名を指定する。ここでは自動的に割り当てられた「住所エクスポート」のままでいいだろう。

Access年賀状_011_mid_640

<fig.11 : テキストインポートウィザードでインポート先のテーブル名を指定する>

インポートウィザードを終了すると、このインポート操作を保存するかを聞かれる。もし何度も同じ操作をする可能性があるなら保存をするが、このような場合は保存しなくていいだろう。

Access年賀状_012_mid_640

<fig.12 : テキストインポートウイザードでインポート操作の保存ができる>

データのインポートができた。このままではフィールド名がわかりにくいので、テーブルをデザインしてフィールド名を「宛名」、「郵便番号」、「住所」に変えよう。

Access年賀状_013_mid_640

<fig.13 : 住所データがインポートできた>

Access年賀状_014_mid_640_480

<fig.14 : テーブルをデザインビューにしてフィールド名を変更する>

Access年賀状_015_mid_640

<fig.15 : テーブルをデザインビューにしてフィールドを「宛名」、「郵便番号」、「住所」に変更する>

Access年賀状_016_mid_640

<fig.16 : 「住所エクスポート」テーブルのフィールド名を変更した>

次に、このテーブルをもとにして、はがきの宛名印刷に使いやすいデータをクエリで加工する。「作成」タブの「クエリデザイン」で新しいクエリを作成しよう。クエリを作成すると、どのテーブルのデータからデータを取得するかを選択する。ここでは「郵便番号住所」のデータしかないので、それだけが選択できる。

Access年賀状_017_mid_640

<fig.17 : 「作成」タブの「クエリデザイン」で新しいクエリを作成する>

Access年賀状_018_mid_640

<fig.18 : クエリデザインでテーブルを選択する>

Access年賀状_019_mid_640

<fig.19 : 新しいクエリにテーブルが関連付けられた>

新しいクエリにテーブル「住所エクスポート」が関連付けられたら、表示するフィールドを選んでいく。ここで単にフィールドを「宛名」、「郵便番号」、「住所」と選択してもいいが、後で印刷画面のレポートを作りやすくするために、フィールドを少し加工しよう。

宛名には「様」を付けたいので、全角スペースをひとつ挟んで「様」を表示するようにする。郵便番号は前の 3桁と後ろの 4桁を分離する。住所はそのままでいいだろう。このように表示するには、「フィールド」を次のように記述する。

———————————

宛名様: [宛名] & " " & "様"
郵便番号前: Left([郵便番号],3)
郵便番号後: Right([郵便番号],4)
住所

———————————

まず最初のフィールドに「宛名様」とするのは、フィールドの別名だ。そのあとに「:」をはさんで表示するデータを記述する。「&」は文字列をつなぐ演算子で、” ”は全角のスペースをひとつ挟んでおり、次の「&」で”様”の文字をつないでいる。

次のフィールドの別名は「郵便番号前」とし、「:」ではさんで Left([郵便番号],3) とするのは、「郵便番号」のフィールドのデータを左から、つまり前から3文字だけ表示する関数だ。同様に次のフィールドは別名を「郵便番号後」とし、「:」ではさんで Right([郵便番号],4) としている。これは「郵便番号」のフィールドのデータを右から、つまり後から4文字だけ表示する関数だ。これで郵便番号の前と後ろを別のフィールドで表示し、区別できる。

「住所」フィールドはそのまま使えばよいだろう。

Access年賀状_020_mid_640

<fig.20 : 表示するフィールドの式を記述する>

フィールドの式が記述できたらクエリを保存する。「印刷用クエリ」の名前にしよう。

Access年賀状_021_mid_640

<fig.21 : クエリを保存する>

クエリが保存できたらデータを確認しよう。宛名にはスペースをはさんで「様」が、郵便番号は前 3桁と後 4桁が別フィールドで分離されて表示されているはずだ。

Access年賀状_022_mid_640

<fig.22 : 「印刷用クエリ」のデータを確認する>

次に印刷用のレポートを作成する。「作成」タブから「レポートデザイン」で空白のレポートを作成する。空白のレポートでは自動的に「ページヘッダー」と「ページフッター」ができるが、年賀状印刷にヘッダーやフッターは必要ないので削除する。ヘッダーとフッターを削除するには、

Access年賀状_023_mid_640

<fig.23 : 「作成」タブから「レポート」「レポートデザイン」で新しい空白のレポートを作成する>

Access年賀状_024_mid_640

<fig.24 : レポートの「ページヘッダー」と「ページフッター」を削除する>

次にレポートに対してデータを割りつける。レポートのビューでは、左上の「■」をポイントするとレポート全体を選択したことになるので、その状態で「プロパティシート」から「データ」タブの「レコードソース」をクリックして関連付けるテーブルまたはクエリを選択する。ここでは「印刷用クエリ」を選択する。

Access年賀状_025_mid_640

<fig.25 : レポートに対してレコードソースを割り当てる>

次にレポートにフィールドを追加する。「デザイン」タブから「既存のフィールドの追加」をクリックすると、レポートに関連付けられた「印刷用クエリ」の各フィールドを選択できるので、レポートにドラッグしてフィールドを追加する。

あるいは「デザイン」タブの「コントロール」から「テキストボックス」をレポートにドラッグし、後でフィールドのデータを関連付けてもいいだろう。

フィールドを画面に追加すると、フィールド名のラベルも同時にできるが、必要ないので削除する。

Access年賀状_026_mid_640

<fig.26 : レポートにフィールドを追加する>

Access年賀状_027_mid_640

<fig.27 : 不要なラベルを削除した>

次に、1ページごとに改ページされる設定をする。それには「詳細」のセクションを選択したまま「プロパティシート」で「改ページ」を「カレントセクションの前」に変更する。これで 1レコードずつ改ページされて印刷されるようになる。

Access年賀状_028_mid_640

<fig.28 : 「詳細」セクションを改ページするように設定する>

後は用紙のサイズを「はがき」にし、各フィールドのフォントや文字の大きさ、位置を調節するだけだ。フォントは、郵便番号は「MS Pゴシック」に、住所と宛名は「HG教科書体」がおすすめだ。文字の大きさは「郵便番号前」を 16ポイント、「郵便番号後」を 14ポイント、「住所」を 12ポイント、「宛名様」を 22ポイントとしてみた。

レポートデザインのコツとして、印刷の余白はできるだけ小さくしておくことがある。「郵便番号前」と「郵便番号後」のフィールドは、年賀はがきの郵便番号枠に収まるようにするために「文字配置」を「均等割り付け」にするとよい。また住所のフィールドは、長い住所もあるので大きめにしておき、さらに切手印刷に重ならないようにレイアウトする。「宛名様」のフィールドはハガキの中央に収まるように「文字配置」を「中央」にするとよいだろう。

Access年賀状_029_mid_640

<fig.29 : フィールドの文字フォントと文字の大きさを設定する>

「印刷プレビュー」でおおまかなレイアウトを確かめながらデザインする。だいたいのレイアウトができたら、A4サイズの用紙を 4つに切って葉書大にし、印刷する。印刷した紙を年賀葉書に重ねて位置を確認する。プリンタによって印刷する位置に違いがあるので、ここは何度かやってみながら調節するしかない。

Access年賀状_030_mid_640

<fig.30 : 「印刷プレビュー」でレイアウトを確認する>

IMG_4099_mid_640_480

<fig.31 : 普通の紙に印刷して年賀葉書に重ねて位置を確かめる>

おおむね位置があえば、年賀葉書をプリンタにセットして印刷する。ここでも一度に印刷せず、何枚か試し印刷をし、郵便番号の位置などレイアウトがうまく印刷されるか確認しながらしよう。最終調整だ。あっていなければフィールドサイズを変えたり、フィールドの位置を動かしたりしてベストの位置に修正しよう。

IMG_4098_mid_640_480

<fig.32 : 郵便番号の位置を確認しながら印刷する>

このように説明すると手間がかかるようだが、Access がある程度わかっているなら簡単だ。住所データさえあれば 15分もあれば印刷できる状態まで作れるだろう。

作業手順とコツをまとめると次のようになる。

(1)データをインポートする。このとき郵便番号を数値にせずテキストでインポートする。
(2)データをそのまま使わず、宛名を「様」付きにしたり郵便番号を前と後ろに分けるクエリを作る。
(3)レポートを作ってクエリを割り当てる。ページのヘッダーとフッターを削除し、詳細セクションを改ページする。
(4)フィールドの大きさやフォント、文字の大きさをレイアウトする。文字位置を「均等割り付け」や「中央」で工夫する。
(5)試し印刷を念入りにして、文字の大きさや郵便番号の位置を丁寧にあわせる。

Access は複数ページにわたる帳票印刷が得意だ。これは葉書印刷にも活かせるので、ぜひ Access で年賀状印刷をやって欲しい。そしてこの年賀状印刷のコツは他の帳票印刷でも使えるはずだ。

Written by Yoshio Matsumoto

2014年12月30日 @ 1:05 PM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。