1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Access_VBA】SQLを使用し、csvをエクスポート

Last updated at Posted at 2022-01-25

自分用に記載したメモ

【SQLを使用しエクスポート処理】

Accessは容量制限が少なかったり、
大量のレコードを抱えたテーブルやクエリの処理が重い。。。
となった方は多いと思います。

過去に、DoCmdを使用しエクスポート処理を行った際、
2時間もかかったので、以下の処理に変更。

2時間 → 1秒くらいに短縮できたことがあります。

もし、エクスポート処理で行き詰まっていたら
息抜きに試してみるのも良いかも?

まずは生成するファイルの存在を確認
 ※あったら削除 / なければスルー

Dim rc As Long
Const FileName As String = "今からエクスポートするcsvのフルパス"

DoCmd.SetWarnigs False

If Dir(FileName) <> "" Then
    rc = MsgBox("すでに「ファイル名」が存在しています" & vbCrLf & "上書きしても問題ないですか?", vbYesNo + vbQuestion)    
    If rc = vbYes Then
        Kill FileName
    End If
End If

SQLでエクスポート
※ファイルパス = エクスポートするcsvファイルのパス(ファイル名は含めない)
※ファイル名 = エクスポートするcsvファイルの名前

ExSQL = "SELECT * INTO [text;FMT=Delimited;DATABASE=ファイルパス;IMEX=0].[ファイル名.csv] FROM テーブル名;"

With DoCmd
     .RunSQL ExSQL
     .SetWarnigs True   
End With

MsgBox " 完了"

合体

Dim rc As Long
Const FileName As String = "今からエクスポートするcsvのフルパス"

DoCmd.SetWarnigs False

If Dir(FileName) <> "" Then
    rc = MsgBox("すでに「ファイル名」が存在しています" & vbCrLf & "上書きしても問題ないですか?", vbYesNo + vbQuestion)    
    If rc = vbYes Then
        Kill FileName
    End If
End If

ExSQL = "SELECT * INTO [text;FMT=Delimited;DATABASE=ファイルパス;IMEX=0].[ファイル名.csv] FROM テーブル名;"

With DoCmd
     .RunSQL ExSQL
     .SetWarnigs True   
End With

MsgBox " 完了"
1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?