パラメータクエリの結果をCSVファイルで出力

こんにちは。伊川(@naonaoke)です。


前回、上の記事で、ACCESSからCSVファイルで一発出力をする方法を紹介しました。

前回は、すべてのレコードを出力しました。

その方法だと、大量にデータがあるときは、不便です。

ACCESSはカンタンにお好みのデータを抽出する方法があります。

それが、パラメータクエリです。

このパラメータクエリを利用して、CSVファイルで転送します。


スポンサーリンク



パラメータクエリを利用

いつも、クエリのデザイングリットでパラメータクエリを設定します。

今回は、VBAでパラメータクエリを呼び出します。

また、VBAでSQL文を記載します。

VBAでSQL文を実行するには、上の記事を参照してください。

今回のお題
  • 抽出用のフォームを作成する
  • VBAでパラメータクエリを呼び出す
  • 抽出結果をCSVへ転記
  • 同一フォルダへ自動保存




パラメータクエリでCSVへ転送 作業手順 その1 データベースを確認

抽出専用のフォームを作成します。

専用フォームの作成の方法は、ここでは割愛します。




パラメータクエリでCSVへ転送 作業手順 その2 コードを解説

今回利用する変数

今回利用する変数
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim dq As DAO.QueryDef
Dim stSQL As String

データベース型の変数を宣言

Set db = CurrentDb()

Database型の変数dbを宣言し、カレントデータベースオブジェクト「CurrentDb」を

参照する変数dbにセットします。

Set rs = db.OpenRecordset(“Q_フォーミュラ”, dbOpenDynaset)


Q_フォーミュラを参照します。

パラメータクエリをVBAで呼び出す

stSQL = “PARAMETERS[所属チームを入力] Text; SELECT * ” _

FROM Q_フォーミュラ WHERE 所属チーム=[所属チームを入力]


Set dq = db.CreateQueryDef(“パラメータDAO”, stSQL)

dq.SQL = stSQL

Dim dq As DAO.QueryDef

QueryDefは、クエリを定義する場合に使用するオブジェクト

CreateQueryDefメソッドで、データベースにクエリを作成し、変数dqにセットします。

転送コード

DoCmd.TransferText acExportDelim, , “パラメータDAO”, _

TransferTextは、転送を命令するコードです。

acExportDelim,

項目間の区切り文字をカッコつけて言ったのが「デリミタ」です。

項目と項目の間をぶった切ってくれています。

相対パスのコード

CurrentProject.Path & “\” & Me.所属チーム & “.csv”, True, “”

現在のデータベースファイルが格納されているフォルダを参照します。


作成したクエリを削除

DoCmd.DeleteObject acQuery, “パラメータDAO”

必要なデータが抽出された後、「所属チーム」クエリを削除します。

この処理をしていないと、再度「所属チーム」に抽出したいデータを入力して「実行」ボタンをクリックした場合、「すでに’所属チームクエリが存在する」のメッセージが出てエラーになります。

そこで、一度作成した「クエリ(所属チーム)」を削除しておく必要があります。

変数を解放し、MsgBoxで、処理完了を知らせる

Set rs = Nothing

Set db = Nothing

MsgBox& Me.所属チーム & “を出力しました”

パラメータクエリでCSVへ転送 作業手順 その3 完成コード





ここがポイント

ここがポイント
Function8.png
単一の条件で抽出するコードです。この方法は、定例のミーティング等で、資料を作成する時等、便利です。もちろん、ACCESSのレポートを利用する事もできますが、Excelのほうが装飾はカンタンです。

 




まとめ

今回のコードは、私も実務で利用しています。

ぜひ、みなさんも実務で利用してください。

 

今回のサンプルファイルは、No152です。

サンプルファイルの購入
ブログが動画で紹介した内容のサンプルファイルを
購入できます。月額3,000円です。
練習用ファイルもダウンロードできます。
PayPal経由でお支払いでます。
ダウンロード回数に制限はありません。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事