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