INTO句とSELECT命令を組み合わせたSQL文で書き出す

INTO句とSELECT命令を組み合わせたSQL文で書き出す

Sub テキストファイルに書き込む3()
'SQL文で書き出す
Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset
Dim myDB As String, myTbl As String, myTxtFile As String
Dim myFolder As String, tmpSTR As String

'書き出し元のmdbファイル
myDB = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb"
'書き出すデータ
myTbl = "(select * from 伝票一覧 where 担当者 = '星野');"
'テキストファイル名
myTxtFile = "星野担当一覧.csv"
'書き出し先のフォルダ名
myFolder = ThisWorkbook.Path & "\txt\"

'書き出し先を指定する文字列を作成
tmpSTR = "[TEXT;DATABASE=" & myFolder & "].[" & myTxtFile & "]"

'データベースに接続し、SQL文を実行 (テキストファイル書き出し)
With myCon
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .Open myDB
  .Execute "select * into " & tmpSTR & "from " & myTbl
End With

myCon.Close: Set myCon = Nothing

End Sub

テキストファイルを書き出す際のひな形となるSQL文
SELECT * INTO [TEXT;DATABASE="書き出しフォルダ名"].[ファイル名] FROM テーブル名;

INTO句とSELECT命令を組み合わせて新規テキストファイルを作成した場合には、書き出しフォルダ内に自動的に schema.ini ファイルが作成され、書き出したテーブルの定義も保存される。
フォルダ内に、すでに schema.ini ファイルが存在する場合、書き出したテキストファイルのスキーマ情報がなければ、追記される。
(上書きではない。)

実行結果

schema.ini ファイル 定義が追加されている。