自分用に記載したメモ
【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 " 完了"