セル内改行があるエクセルをテキスト出力

解決


ただみね  2005-01-27 09:33:51  No: 88039

VisualBasic6.0を使用しています。
エクセルのデータをテキストに出力させる場合、セル内で改行されていると
出力先のテキストファイルでは改行部分が正しく表示されません(黒マス上に
なり1行で表示される)。
どこかで改行コード変換の工夫をする必要があるのでしょうか?

(たとえばこのような場合です)
   strConnect = "Excel 8.0;DATABASE=C:\input.txt"
    Set DB = OpenDatabase("C:\input.txt", False, False, strConnect)
    
    Set rst = DB.OpenRecordset("Sheet1$", dbOpenTable)
    Do While Not rst.EOF
        data1 = rst!1列目        
        Open "output.txt" For Output As #1
        Print #1, data1
        Close #1
        rst.MoveNext
    Loop


魔界の仮面弁士  2005-01-27 09:40:44  No: 88040

Windowsの改行コードは、vbCrLf が一般的ですよね。
(稀に vbCr のみの場合もありますが)
それに対して、Excelのセル内改行は、vbLf が使われています。

その黒丸が、vbLfのコードになっていないか、確認してみてください。
その上で、必要に応じて Replace関数で置換すれば、適切な結果が得られるかと。


ただみね  2005-01-28 14:34:28  No: 88041

ありがとうございます。Replace関数でうまくいきました。
それにして同じMicrosoft製品で改行コードが異なるのも
おかしな感じがしますね。

    Set rst = DB.OpenRecordset("Sheet1$", dbOpenTable)
    Do While Not rst.EOF
        data1 = rst!1列目        
        data1 = Replace(data1, vbLf, vbCrLf) <<<  これで解決!
        Open "output.txt" For Output As #1
        Print #1, data1
        Close #1
        rst.MoveNext
    Loop


Dental  2005-01-28 20:17:00  No: 88042

> それにして同じMicrosoft製品で改行コードが異なるのも

Excel は元々、Mac版が先に出ていたんですよね。

でもって、Macの改行コードは CR。だからCSVを作るとき、
CR→行区切り、LF→セル内改行という使いわけができたいう話。

それが巡って、Win版でもセル内改行は、CRLF や CR ではなく
LF が使われ続けているのだとか。

# 上記はあくまで噂なんで、ホントかどうかは知りません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加