Microsoft Office

【初心者向け】Accessから大量データをVBAでCSV出力する方法【10万件OK】

【Access VBA】10万件以上のテーブルデータをCSVに一発エクスポートする方法

Accessのテーブルに大量のデータがあると、エクスポート時に固まったり、手動では限界を感じたりしませんか?

この記事では VBA(Visual Basic for Applications)を使って、10万件以上のデータを一発でCSV形式にエクスポートする方法 をご紹介します。


✅ 対象環境

  • Access 2016 以降(32bit / 64bit 両方可)
  • データ件数:10万件以上(筆者検証時:112,000件)
  • CSV形式でエクスポートしたい用途(バックアップ・Excel加工・他システム連携など)

📌 実行するとどうなる?

指定したテーブルを丸ごとCSVに出力し、以下のようなCSVファイルが自動生成されます。

  • ヘッダ(フィールド名)付き
  • データは1件ずつ改行され、カンマ区切り
  • ダブルクォーテーションで各値を囲む形式(カンマや改行混入に強い)

🛠 使用するVBAコード

Accessの「VBAエディタ(Alt + F11)」を開いて、以下のコードを貼り付けてください。

Sub ExportLargeTableToCSV()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim outputFile As String
    Dim field As DAO.Field
    Dim line As String
    Dim fileNum As Integer

    ' 保存先のパスを指定(自分の環境に合わせて変更)
    outputFile = "C:\path\to\your\output.csv"

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT * FROM YourTableName", dbOpenSnapshot)

    fileNum = FreeFile
    Open outputFile For Output As #fileNum

    ' ヘッダ出力
    For Each field In rs.Fields
        line = line & field.Name & ","
    Next
    line = Left(line, Len(line) - 1)
    Print #fileNum, line

    ' データ行出力
    Do While Not rs.EOF
        line = ""
        For Each field In rs.Fields
            line = line & """" & field.Value & """" & ","
        Next
        line = Left(line, Len(line) - 1)
        Print #fileNum, line
        rs.MoveNext
    Loop

    Close #fileNum
    rs.Close
    Set rs = Nothing
    Set db = Nothing

    MsgBox "CSV出力が完了しました!", vbInformation
End Sub

📝 注意点

  • YourTableName は実際のテーブル名に置き換えてください。
  • ファイル出力先(outputFile)は、書き込み権限のあるパスにしてください。
  • 書き出しに数秒〜数十秒かかる場合がありますが、途中で固まっても待てば完了します。

🎯 補足:なぜVBAが有効?

Accessのエクスポート機能だけでは大量データに不安定さがあるため、VBAによる直接出力のほうが確実かつ自動化に適しています。

また、将来的にはこの処理をボタン1つで実行できるフォームに組み込むことも可能です。


✅ まとめ

Accessのテーブルから大量データをCSVにエクスポートするなら、VBAを使うのが一番確実で便利です。

10万件超でもしっかり対応可能!
ぜひこの記事を参考に、自動化や定期出力などに活用してみてください!

オススメの記事

-Microsoft Office
-