dポイントプレゼントキャンペーン実施中!

Accessのデータをテキストファイルで出力する方法を教えてください。

クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。
DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt"

フィールドごとに改行して出力する方法はないでしょうか?


<クエリ結果>
フィールド1  フィールド2  フィールド3
aaa      bbb      ccc

<出力テキストファイル>
aaa
bbb
ccc

A 回答 (3件)

ADO の GetString メソッドを使って直に文字列を作って出力してみてはいかがでしょうか。


(GetStringのヘルプを参照してください)

列間の区切り、および行間の区切りに vbCrLf を指定します。
出来上がった文字列の最終には vbCrLf が付いているので、それを削除した文字列を出力します。


記述例)

Private Sub Sample()
  Dim rs As New ADODB.Recordset
  Dim vTmp As Variant
  Dim ffn As Integer
  Const sQueryName As String = "クエリ名"
  Const sOutputFileName As String = "C:\Hoge\HogeTest.txt" '出力ファイル名

  rs.Open sQueryName, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
  If (Not rs.EOF) Then
    vTmp = rs.GetString(adClipString, , vbCrLf, vbCrLf)
  End If
  rs.Close

  If (Not IsEmpty(vTmp)) Then
    ffn = FreeFile
    Open sOutputFileName For Output As #ffn
    Print #ffn, Left(vTmp, Len(vTmp) - Len(vbCrLf))
    Close #ffn
  End If
End Sub
    • good
    • 1

<クエリ結果>


フィールド1  フィールド2  フィールド3
aaa      bbb      ccc
aaa2      bbb2      ccc2

aaa
aaa2
bbb
bbb2
ccc
ccc2
でよいならEXCELも考えますが、邪道なので。

VBAで行います。
TransferText を使わなければ、いろいろできます。

出力ファイルOPEN
クエリ1件目取得
レコード無くなるまで繰り返し
 1項目目出力&改行
 2項目目出力&改行
 3項目目出力&改行
 ・・・
 クエリn件目取得
    • good
    • 0

VBA上でOPENコマンドとPRINT#でできると思います



OPEN "C:\TEST.TXT" FOR OUTPUT #1

PRINT #1,フィールド1
PRINT #1,フィールド2
PRINT #1,フィールド3

CLOSE #1
てな感じで、データに合わせてループを入れるといいでしょうか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す