見出し画像

【VBAマクロ】AccessからExcel出力して請求書を作成する方法その3(クエリ編)

さて前回までは、テーブル構成とフォーム上のギミックについて解説していきましたね。

今回は、いよいよクエリ作成してVBAの基本コードを紹介していきます。

「請求書作成するのに、ここまでしないといけないの!?」とげんなりしている方が多いかもしれませんが、ここまでしないといけないんです。(笑)

しかし、何事も仕組みが分かれば他のスキルも同時に身につくものなので、めげずに頑張っていきましょう。

請求書をExcel出力するにはクエリが必須

請求書を出力する場合、出力データを抽出するクエリの作成は必ず行います。

だって、テーブルそのまま出力しちゃうと過去分全て出てしまいますもんね。

余計なデータまで出力されないように、日付や属性で出力条件を決めておきましょう。

当たり前に思うかもしれませんが、仕様を考える上で結構抜け落ちる箇所でもあります。

請求書出力クエリには大きく分けて2パターンある

画像2

請求データを抽出する方法としては、大きく分けて2パターンあると言えます。(他にもあるかもしれませんが一般論として)

日付で抽出するパターンと属性やフラグで抽出するパターン。

例えば、請求書作成日や支払い期限を条件に出力するのであれば日付になります。

日々のルーチンとして請求書出力する作業が決まっているのであれば、こうした運用も考えられるでしょう。

もう一つが、請求書未発行(未出力)のデータを抽出する方法です。

出力すると同時にフラグが付く仕組みや、属性が「済」になるような仕組みを作っておけばクエリで該当データを洗い出せますよね。

この辺は運用によって変わるので、場合によっては両方使っていくことも考えられるでしょう。

クエリをレコードセットにしてExcelへ出力

VBAに入る前に、基本的な出力構造について解説しておきましょう。

該当データが抽出できたら、そのクエリ結果をレコードセットとして捉えて取得していきます。

ここで気をつけるべき点が、請求基本情報と請求内訳の2種類が存在する点です。

請求書の上段には、恐らく請求元や請求先の情報、支払い期限等が記載されますよね。

これは請求書1枚につき1レコードになるはずです。

一方で、請求内訳は請求書1枚につき1レコードとは限らず案件によって変化します。

イメージとしては、請求基本情報の中で請求内訳をループさせる感じです。

そして最大の難関が、Excelフォーマットの請求内訳数に上限があること

請求書サンプル

この上限を超える場合、同じ請求基本情報を複製しなければなりません。

まずは、この点をしっかり頭でイメージした上でVBAを組んでいくようにしましょう。

今日はここまでです。焦らず地に足つけるように進みましょう。

画像3

なかなか請求書出力のVBAまで辿り着けずに、イラつかれているかもしれませんね。(笑)

しかし、ネット上では全てをすっ飛ばしてプログラムだけ解説している情報に溢れています。

こういったプログラム系のブログ解説は「いや!そもそも何?」ってことが多いカテゴリでもあるので、出来るだけ丁寧に寄り添って解説していくつもりです。

ここが分からん!ってことがあれば、遠慮なくコメントくださいね。

それでは!次回に。

画像4


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