- 締切済み
mdbからcsv保存する際に1行1レコードでの保存をしたい
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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- w_HIRO_w
- ベストアンサー率47% (9/19)
質問の内容をうまく読み取れないので・・・確認させてください。 「1つのセルに複数の文字列をセル内改行して表示したい」ということでいいでしょうか。 違ったら、無視してください。 あっていれば、以下の例のように出力してやればセル内改行表示になります。 ソースは修正中のようなので出力イメージを書いておきます。 (例)CSVファイルの出力イメージ "aaaaa<LF> bbbb<LF> cccc<LF> dddd"<CRLF> ※<LF>、<CRLF>は改行コード(制御コード)です。
改行を先に処理しておいて、 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