重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

HTAでmdbからデータを抽出しcsvファイルに保存をする際に1行1レコードで保存をしたいのですが、
保存したcsvをExcelで開くと改行を含むフィールドが1セルに入ってくれません。
改行コードを別の文字列にすれば1セルに収まりますが、
その場合、Excelを開いた後に改行コードの代替文字列の置換を
しなければならないため、csv保存の段階で改行を含む状態で保存をしたいのです。

ダブルクオーテーションで括ればよいかと考えたのですがうまくいきません。

どなたかアドバイスをいただけませんでしょうか。
よろしくお願いします。


sql = "select * from tbl_log"
with rs
.Open sql, cn, 3, 3
If not .EOF then
Do while not .EOF
For i = 0 to .Fields.Count-1
buf = buf & """" & Replace(.fields(i),vbcrlf,vblf) & ""","
Next
buf = Left(buf,Len(buf)-1)
buf = buf & vbcrlf
.MoveNext
Loop
End If
.Close
End with

A 回答 (2件)

質問の内容をうまく読み取れないので・・・確認させてください。


「1つのセルに複数の文字列をセル内改行して表示したい」ということでいいでしょうか。
違ったら、無視してください。

あっていれば、以下の例のように出力してやればセル内改行表示になります。
ソースは修正中のようなので出力イメージを書いておきます。

(例)CSVファイルの出力イメージ
"aaaaa<LF>
bbbb<LF>
cccc<LF>
dddd"<CRLF>

※<LF>、<CRLF>は改行コード(制御コード)です。
    • good
    • 0

改行を先に処理しておいて、


docmd.Transfertext acExportDelim
を使うのはいかがでしょうか?

この回答への補足

16Augustさん
ご返信ありがとうございます。

説明が不足しておりました。
DBとしてmdbは使用していますがAccessは使用していませんので、
docmdコマンドは使えないのです。

現在はFileSystemObjectでテキスト保存をしております。
別の方法を検討します。
ありがとうございます。

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.CreateTextFile(expfile, ForWriting, True)

objLogFile.Write buf
objLogFile.Writeline
objLogFile.Close

補足日時:2006/11/28 15:09
    • good
    • 0

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