AccessからCSVを出力するVBAコードまとめ|文字コード指定やエラー対処も解説【2025年版】

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

AccessのデータをCSVで出力して、他のシステムに連携したい──
そんなときに役立つのが、VBAによる自動エクスポート処理です。

手動でのエクスポートも可能ですが、定期作業であれば「ボタン1つでCSV出力」ができると便利ですよね。

本記事では、AccessからCSV出力するためのVBAコード例を紹介しつつ、
文字コードの指定方法やエクスポート時のよくあるエラー対処法についてもあわせて解説します。

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

目次

AccessからCSV出力する基本のVBAコード

まずは定番の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 に出力ファイルのフルパスを指定
  • DoCmd.TransferText でクエリをCSV形式で出力
  • 第5引数の True でヘッダー行を出力

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

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

出力時にファイル名・パスを柔軟に指定するには?

フォルダやファイルをユーザーに選ばせたい場合は、以下の記事を参考にしてください。

これらを組み合わせることで、ファイル保存場所を柔軟に指定できます。

文字コードを指定したい(UTF-8など)場合の方法

出力先システムによっては、文字コードにUTF-8を求められることもあります。その場合は第7引数にコードページを指定できます。

DoCmd.TransferText acExportDelim, , "Qry●●", strFileName, True,,65001 ' UTF-8
識別子文字体系
(省略)Shift-JIS(デフォルト)
65001UTF-8
1200UTF-16 LE
932Shift-JIS

注意:第6引数を空にした上で、第7引数を設定する必要があります。

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

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

よくあるエラーと対処法(3027など)

エラー例

3027:データベースまたはオブジェクトは読み取り専用なので、更新できません。

対処ポイント

  • 出力先のフォルダに書き込み権限があるか確認
  • ファイル名の指定に誤りがないか(拡張子やパス)
  • ファイルがすでに開かれていないかチェック

詳しくは別記事でまとめています: 👉 Access実行時エラー3027の対処法

自動化のその先へ:他ツールと連携するには?

AccessでCSV出力ができれば、以下のようなツールとの連携も可能です:

  • Excel:Power Queryを使って自動取込
  • Googleスプレッドシート:CSV読み込み+GASで通知
  • ZohoやNotionなどへの手動アップロード

業務の流れに応じて、どこまで自動化するかを考えると効率アップにつながります。

関連記事リンク

まとめ|Access資産を活かす業務効率化とは?

AccessでのCSV出力は、小規模な業務システムや定期的なデータ連携において、今も実用的な方法です。

本記事のコードを活用しながら、少しずつ自動化を進めることで、作業効率も確実にアップします。

最近では、Google Apps Script(GAS)やNotionなどのツールを併用しているケースも増えています。
これまでAccessで培ったロジックや自動化の知見は、次のツール移行や業務改善にもつながる武器になりますよ!

よかったらシェアしてね!
  • URLをコピーしました!

💡そのAccessスキル、もっと活かせる場所があるかも
私が年収2倍のPMになったストーリーを読む

コメント

コメントする

目次