見出し画像

【VBAマクロ】AccessからExcel出力して請求書を作成する方法その1(テーブル構造編)

Accessデータベースで顧客管理をしている場合、請求書の出力は高い確率で必須項目となります。

データは集まっているのに、請求書だけ手打ちのエクセル作業なんてケースは意外と多いもの。

今回は、顧客管理をしているAccessデータベースからExcelの請求書を出力させるためのテーブル構造について紹介します。

請求内訳のテーブル構造は一対多にする

画像4

Accessから請求書を出力する際、最初に考えておきたいのが請求内訳データの持ち方です。

顧客情報は請求書1枚につき1レコードですが、請求内訳には複数の項目がぶら下がってきます。

しかも、顧客によって数が変わるので固定させるのも難しいでしょう。

画像5

請求内訳の項目数に応じてフィールドを作る方法もありますが、データの持ち方としては良いものではありません。

このことから、請求内訳のテーブルイメージを以下のように持つことが重要になります。

システムイメージ.001

オレンジのテーブルでは顧客IDがユニークになっていますが、グリーンのテーブルではユニークになっていません。

このようにテーブル構築時から請求内訳テーブルを別で儲けて、メインとなるテーブルと一対多の関係になるようにしておくことがポイントです。

メインとサブの請求書テーブルを作る方法

では、実際に請求書出力に必要なメインテーブルと、サブとなる請求内訳のテーブルを作っていきましょう。

前述の例に従って作っていくので、メインテーブルでは顧客IDがユニークとなるように主キーを設定します。

システムイメージ.001

一方で請求内訳を格納するサブテーブル側では、同じ顧客IDが重複する持ち方になるのでユニークにはしません。

代わりに請求内訳レコードに対して、ユニーク用のフィールドを設けて主キーとします。(ここではRowIDとします。)

Accessから請求書Excel出力はテーブル構造が最重要

画像3

請求書のような一対多のデータを持つ場合には、テーブル構造が最重要になります。

後から出てくるクエリやVBAの部分は、リリース後のシステム改修で取り返しのつく部分です。

しかし、テーブル構造を変えるには格納データの破損や誤った更新等のリスクが伴います

まずはデータのイメージをしっかり考えて、フィールド作成に時間をかけるようにしましょう。

一対多のテーブル構造は、データベース構築の中で非常に多く出てくるので、理解を深めておくと便利です。

画像6

DeepBlueでは、VBAに関する質問や要件定義の相談を受け付けています。

今回、この記事を読んで登録してくれた方には初回のみ無料でVBAマクロに関する相談を承りますよ。

興味ある方は、是非チェックしてみてくださいね。

この記事が気に入ったらサポートをしてみませんか?