アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
以前、この欄で質問させて頂いたCSVデータ変換の件については随分助かり、ありがとうございました。

このたび、Access2000のデータを、テキストファイル(タブによる区切り)に変換(明細ごとの区切りは改行文字を使用)する必要があり、下記のような記述を致しましたが、どうしても、「カンマ区切り」にしかなりません。

インターネットで調べると、テキスト(タブ区切り)の拡張子は「.txt」と説明されているのですが、何か記述が間違っているのでしょうか?
宜しくお願い致します。

(追伸)将来、必要になるかも知れないので、テキスト(スペース区切り)の記述についてもお願いできれば、と思います。

-- 記述内容 ---------------------------------------------------
Dim adoRs As New ADODB.Recordset
Dim strsql As String
Dim strFile As String
Dim 番号 As Long
strsql = "SELECT"

For 番号 = 1 To 34
If 番号 > 1 Then strsql = strsql & ","
strsql = strsql & "フィールド" & CStr(番号)
Next

'strsql = strsql & "FROM WT売掛管理表 ORDER BY フィールド1"

strsql = "SELECT フィールド1,フィールド2,フィールド3,フィールド4,フィールド5,フィールド6,フィールド7,フィールド8,フィールド9,フィールド10,フィールド11,フィールド12,フィールド13,フィールド14,フィールド15,フィールド16,フィールド17,フィールド18,フィールド19,フィールド20,フィールド21,フィールド22,フィールド23,フィールド24,フィールド25,フィールド26,フィールド27,フィールド28,フィールド29,フィールド30,フィールド31,フィールド32,フィールド33,フィールド34 " & _
"FROM WT売掛管理表 ORDER BY フィールド1"


adoRs.Open strsql, CurrentProject.Connection

strFile = "C:\データフォルダ\変換データ.txt"

Open strFile For Output Access Write As #1

Do Until adoRs.EOF

For 番号 = 0 To 32
Write #1, CStr(adoRs.Fields(番号).Value),
Next
Write #1, CStr(adoRs.Fields(番号).Value)

adoRs.MoveNext
Loop

adoRs.Close
Close #1

MsgBox "データ変換処理が終了しました。", vbInformation

Exit Sub
-----------------------------------------------------

A 回答 (2件)

For 番号 = 0 To 32


Write #1, CStr(adoRs.Fields(番号).Value),
Next
Write #1, CStr(adoRs.Fields(番号).Value)

の部分を
strData = ""
For 番号 = 0 To 32
strData = strData & CStr(adoRs.Fields(番号).Value) & vbTab
Next
strData = strData & CStr(adoRs.Fields(番号).Value)
Write #1 strData

のようにするとよいと思います。

この回答への補足

返事が遅くなり、申し訳ありませんでした。
早速、ご回答の通りに実行してみたところ、イメージ的には希望の形になっているように思えます。ありがとうございます。

ただ、明細データが9行のもので実験したところ、

”1行目のフィールド1 フィールド2 ・・・・・・・・フィールド34”
”1行目のフィールド1 フィールド2 ・・・・・・・・フィールド34 2行目のフィールド1 フィールド2 ・・・・・・・・フィールド34”
     ・
     ・
     ・
”1行目のフィールド1 フィールド2 ・・・・・・・・フィールド34 2行目のフィールド1 フィールド2 ・・・・・・・・フィールド34 ・・・・・・ 9行目のフィールド1 フィールド2 ・・・・・・・・フィールド34”

というようにだぶってファイルが作られます。

最後に作られている「”1行目のフィールド1 フィールド2 ・・・・・・・・フィールド34 2行目のフィールド1 フィールド2 ・・・・・・・・フィールド34 ・・・・・・ 9行目のフィールド1 フィールド2 ・・・・・・・・フィールド34”」の内容で、なおかつ、1行目~9行目のデータが、明細ごとに改行文字で区切られていれば良いのですが(エクセルのタブ区切り型式と同様のもの)、そのようには出来るでしょうか?
(例)
1行目のフィールド1 フィールド2 ・・・・・・・・フィールド34
2行目のフィールド1 フィールド2 ・・・・・・・・フィールド34
   ・
   ・
   ・
9行目のフィールド1 フィールド2 ・・・・・・・・フィールド34

なお、このように変換する目的は、他のコンピュータソフトで利用するためだそうです。
どうぞ、宜しくお願い致します。

補足日時:2010/02/25 08:55
    • good
    • 0

strData = ""



Do Until adoRs.EOF
より前にあるのではないでしょうか。
Do Until adoRs.EOF
の直後に
strData = ""
を置いてみてください。
あと、Write の前に、
strData = strData & vbCrLf
が必要ではないかと思います。
    • good
    • 0
この回答へのお礼

前略
1週間程出張していたため、返事が出来ず、申し訳ありませんでした。
早速帰京してご指示の通りやってみましたら、うまく出来ました。
大変ありがとうございました。
今後とも宜しくお願い申し上げます。
                         草々

お礼日時:2010/03/09 19:49

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