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
Windowsの改行コードは、vbCrLf が一般的ですよね。
(稀に vbCr のみの場合もありますが)
それに対して、Excelのセル内改行は、vbLf が使われています。
その黒丸が、vbLfのコードになっていないか、確認してみてください。
その上で、必要に応じて Replace関数で置換すれば、適切な結果が得られるかと。
ありがとうございます。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
> それにして同じMicrosoft製品で改行コードが異なるのも
Excel は元々、Mac版が先に出ていたんですよね。
でもって、Macの改行コードは CR。だからCSVを作るとき、
CR→行区切り、LF→セル内改行という使いわけができたいう話。
それが巡って、Win版でもセル内改行は、CRLF や CR ではなく
LF が使われ続けているのだとか。
# 上記はあくまで噂なんで、ホントかどうかは知りません。
ツイート | ![]() |