Access

【Access】VBAでクエリ実行結果をCSVファイルに出力(エクスポート)方法

2021年2月17日

ソースコードの説明

Access VBAで参照クエリを実行した結果をCSVファイルに出力するソースコードをご紹介します。

テストはAccess2003で行っています。

8行目でCSVファイルの出力先とCSVファイルの名前を指定しています。

Open strFolder & "C:\access\TestSample.csv" For Output As #lngFileNum

11行目で実行する参照クエリを指定しています。

Set rst = dbs.OpenRecordset("TestQuery") '実行する参照クエリを指定

14行目ではCSVファイルのヘッダー行を出力しています。

Print #lngFileNum, "社員番号,社員名,社員名カナ,部署,メールアドレス,入社年月,勤続年数,給与,登録日,登録者"

17、18行目で参照クエリの実行結果を出力しています。

Print #lngFileNum, !社員番号 & "," & !社員名 & "," & !社員名カナ & "," & !部署 & "," & !メールアドレス & "," & !入社年月 & "," & _
            !勤続年数 & "," & !給与 & "," & !登録日 & "," & !登録者

VBAソースコード

Sub CSVExportSample()
    Dim dbs As Database
    Dim rst As Recordset
    Dim lngFileNum As Long

    lngFileNum = FreeFile()
    '出力するCSVファイルの保存先を指定
    Open "C:\access\TestSample.csv" For Output As #lngFileNum
    
    Set dbs = CurrentDb
    Set rst = dbs.OpenRecordset("TestQuery")    '実行する参照クエリを指定
    With rst
    'CSVファイルのヘッダー行を出力
    Print #lngFileNum, "社員番号,社員名,社員名カナ,部署,メールアドレス,入社年月,勤続年数,給与,登録日,登録者"
      Do Until .EOF
        '参照クエリ内を1行ずつCSVファイルに出力
        Print #lngFileNum, !社員番号 & "," & !社員名 & "," & !社員名カナ & "," & !部署 & "," & !メールアドレス & "," & !入社年月 & "," & _
            !勤続年数 & "," & !給与 & "," & !登録日 & "," & !登録者
        .MoveNext
      Loop
      .Close
    End With
    Close #lngFileNum
End Sub

変数を参照するクエリを実行する場合の説明

フォーム上にあるテキストボックスなどに入力された値を参照している参照クエリの場合は上記のソースコードのままでは実行できないので、ソースコードを少し変更してパラメーターを参照できるようにします。

17~19行目でフォーム上にあるテキストボックスの値を取得できるようにしています。

.Parameters("[Forms]![F_MENU]![DateFromC]") = Forms![F_MENU]![DateFromC]
.Parameters("[Forms]![F_MENU]![DateToC]") = Forms![F_MENU]![DateToC]
.Parameters("[Forms]![F_MENU]![DateFrom]") = Forms![F_MENU]![DateFrom]

パラメーター参照用VBAソースコード

Sub CSVExportSample2()
    Dim dbs As Database
    Dim qdf As QueryDef
    Dim rst As Recordset
    Dim lngFileNum As Long

    lngFileNum = FreeFile()
    '出力するCSVファイルの保存先を指定
    Open "C:\access\TestSample.csv" For Output As #lngFileNum
    
    Set dbs = CurrentDb
    Set qdf = dbs.QueryDefs("TestQuery")    '実行する参照クエリを指定
    Set dbs = CurrentDb
    
    With qdf
        'フォーム参照パラメータ名にコントロールの値をセット
        .Parameters("[Forms]![F_MENU]![DateFromC]") = Forms![F_MENU]![DateFromC]
        .Parameters("[Forms]![F_MENU]![DateToC]") = Forms![F_MENU]![DateToC]
        .Parameters("[Forms]![F_MENU]![DateFrom]") = Forms![F_MENU]![DateFrom]
        Set rst = .OpenRecordset
    End With
    
    With rst
    'CSVファイルのヘッダー行を出力
    Print #lngFileNum, "社員番号,社員名,社員名カナ,部署,メールアドレス,入社年月,勤続年数,給与,登録日,登録者"
      Do Until .EOF
        '参照クエリ内を1行ずつCSVファイルに出力
        Print #lngFileNum, !社員番号 & "," & !社員名 & "," & !社員名カナ & "," & !部署 & "," & !メールアドレス & "," & !入社年月 & "," & _
            !勤続年数 & "," & !給与 & "," & !登録日 & "," & !登録者
        .MoveNext
      Loop
      .Close
    End With
    Close #lngFileNum
End Sub
Accessマクロ&VBAのプログラミングのツボとコツがゼッタイにわかる本
最新のAccess2019/2016にも対応しているので失敗しない

Rakuten

Amazon

Yahoo!ショッピング

 
  • この記事を書いた人
  • 最新記事

かじ

マッチングアプリで出会った女性と結婚をした埼玉県在住の新婚さん。 ガジェット好きではあるけど子どもができたため下火に。。。 社内SEとしてプログラミングなど自分の知識と経験をいろんな人に役立ってもらえるように記事を更新します!

-Access
-,