• ベストアンサー

Linuxで作成したCSVをExcelVBAで読込時の改行コードについて

※重複した質問があったら、すみませんm(_)m とっても困っています。教えてください。 Linuxで作成したCSVをExcelVBAで読込時、 前行の改行コード(LF)が、次の行頭のデータに 連結されてしまいます。 どうすれば、この問題を解決できますか? OSは、WindowsXP、EXCELは2000です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

VBAということを見落としてました。 --------それはそれとしてVBAでワークシート関数を利用する方法です-------------- Range("B1") = Application.WorksheetFunction.Clean(Range("A1")) --------------------------------------------------- 1回のInputで全行分読み込みしてしまうのであれば VBAのSplit関数で文字列を配列に分解してしまう。 あとは1行ごと、ループさせてください。 追加部分だけ記述 Dim strArrey()  as string Dim nArrey    as long 'strArreyに行単位で入ります。 strArrey()=split(wk_code, vbLF) 'nArreyに件数が入ります。 nArrey=udound(strArrey())

RAINVOW7
質問者

お礼

ご丁寧にありがとうございました。 早速、試してみます。

RAINVOW7
質問者

補足

Application.WorksheetFunction.Cleanで、解決できました。ありがとうございました。

その他の回答 (3)

回答No.4

そもそも、データの転送のときに、Linux (Unix) の改行が Windows の改行に変換されているべきだと思います。 普通そういう手段があるはずです。

回答No.2

元データを変換してよいのなら (LF)を(CR)(LF)に変換してやればよいのでは? Linux上でコマンドたたいてもできるでしょうけど Windows上でやりたいのなら超メジャーエディタの「秀丸」を使って EUCコードを指定してそのCSVファイルを読み込んで、そのままSJISコードを指定して書き出してやればよいのでは? http://hide.maruo.co.jp/software/hidemaru.html

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 前行の改行コード(LF)が、次の行頭のデータに 連結されてしまいます 列Aに、ということですね。 CLEAN関数を使用します。 1.列Aと列Bの間に一列挿入 2.セルB1に式[=clean(a1)]を入力 3.セルB1を下方向に必要なだけコピー(右下黒い四角をダブルクリックでも可) 4.列B全体をコピーし、「形式を選択して貼り付け」-「値」で変換 5.必要に応じて列Aを削除 でいかがでしょう?

RAINVOW7
質問者

補足

すみません。Clean関数は、VBAで使用できますでしょうか? ソースの一部です↓ Open ActiveWorkbook.Path & "\" & FileName For Input As #1 Do While Not EOF(1)   Input #1, wk_Code Loop 上記で、wk_CodeにCSVの1列目が代入されるのですが、 2巡目になると、前行の改行コードと2行目の1列目の 値が連結して入ってしまいます。 この「wk_Code」から、Linuxの改行コードを除きたいです。 初心者ですみません。よろしくお願いします。

関連するQ&A