Access

AccessからVBAでCSVファイルエクスポート

記事内に商品プロモーションを含む場合があります

AccessのデータをCSVでエクスポートして他システムで活用することはよくある作業です。

もちろん手動でテーブルを選択してエクスポートすることも可能ですが、通常ルーチン作業になることが多いため、ボタン一つで実行できると楽ですね。

今回はAccessからVBAでCSVファイルにエクスポートするコードはお気軽にコピペしてご利用ください。

個人の環境下で検証しておりますのでお使いの環境やデータによって正常に動作しない恐れもあります。サンプルはご自由にお使いいただいて結構ですが自己責任でご利用をお願いいたします。

AccessからCSV(テキストファイル)を出力する方法

テキストファイルへのエクスポート

コードサンプル

'------------------------------------------------------------
'   処理内容:データCSV出力()
'   引数:なし
'   戻り値:
'  更新:
'------------------------------------------------------------
Private Sub OutputCsv()
    Dim strFileName     As String
    
    On Error GoTo Err_Exit
    
    strFileName = "C:\work\test.csv"
    
    'エクスポート
    DoCmd.TransferText acExportDelim, , "Qry●●", strFileName, True
    
    MsgBox "出力しました。", vbOKOnly + vbInformation
    
    Exit Sub
    
Err_Exit:
    MsgBox Err.Number & ":" & Err.Description, vbOKOnly + vbCritical, "OutputCsv()"
End Sub

解説

事前にファイル名(strFileName)をフルパスで指定し、対象のクエリをTransferTextコマンドを使ってエクスポートしています。

DoCmd.TransferText acExportDelim, , テーブル名(クエリー名), 出力ファイル名, True

第2引数区切り記号付きエクスポート
第3引数エクスポート定義名(定義が不要な場合は空白)
第4引数テーブルまたはクエリー名をダブルクォートで囲んで記述
第5引数出力ファイル名
第6引数ヘッダー行を出力する場合はTrue、不要の場合はFalse

※フォルダやファイル名を指定するプログラムは以下をご参照ください。

VBAフォルダ選択
AccessのVBAでファイルダイアログからフォルダを指定する方法主にファイルを出力するときなどに使うフォルダ選択ダイアログ。VBAのサンプルコードを公開しています。コピペでどうぞ。...
ファイル選択
AccessのVBAでファイルダイアログからファイルを指定する方法Accessの処理において、「EXCELやCSVファイルを指定する」というニーズがあります。 テキストボックスに直接入力やコピペに...

エクスポートする際に文字コードを変更したい

出力後に連携するシステムによっては、文字コードを指定したい場合もあります。

その際は第7引数に文字コードを指定してください。

主要な文字コードは以下の通りです。

識別子文字体系
指定なしSHIFT-JIS
65001Unicode (UTF-8)
1200Unicode UTF-16、リトル エンディアン バイト順 (ISO 10646 の BMP)マネージド アプリケーションでのみ使用できる
932SHIFT-JIS

その他の文字コードはこちらで詳細をご確認ください。

DoCmd.TransferText acExportDelim, , "Qry●●", strFileName, True,,65001

第6引数をあけて、第7引数なので要注意!(第6引数は第2引数がacExportDelimの時は無視されます)

注意点

TransferTextコマンドはテキストファイルにエクスポートするコマンドなので出力先のファイル拡張子がテキストファイルと認識されない場合予期せぬエラーになります。

3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。
3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。 Access実行時エラー3027 AccessのVBA実行時、「3027:データベースまたはオブジェクトは読み取り専用なので、更...
ABOUT ME
アズビーパートナーズ
プログラマー→社内SE→SIerのお仕事をしています。 メーカー勤務を経て、中小企業の社内SE、フリーランスなど様々な形態で働いてきました。 業務上生まれた困った…を解決してきたTipsを備忘録も兼ねて公開しています。 困っている誰かのお役に立てれば幸いです。