- ベストアンサー
Linuxで作成したCSVをExcelVBAで読込時の改行コードについて
※重複した質問があったら、すみませんm(_)m とっても困っています。教えてください。 Linuxで作成したCSVをExcelVBAで読込時、 前行の改行コード(LF)が、次の行頭のデータに 連結されてしまいます。 どうすれば、この問題を解決できますか? OSは、WindowsXP、EXCELは2000です。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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())
その他の回答 (3)
- nofutureforyou
- ベストアンサー率9% (25/277)
そもそも、データの転送のときに、Linux (Unix) の改行が Windows の改行に変換されているべきだと思います。 普通そういう手段があるはずです。
- SpiralGalaxy
- ベストアンサー率39% (649/1653)
元データを変換してよいのなら (LF)を(CR)(LF)に変換してやればよいのでは? Linux上でコマンドたたいてもできるでしょうけど Windows上でやりたいのなら超メジャーエディタの「秀丸」を使って EUCコードを指定してそのCSVファイルを読み込んで、そのままSJISコードを指定して書き出してやればよいのでは? http://hide.maruo.co.jp/software/hidemaru.html
- bin-chan
- ベストアンサー率33% (1403/4213)
> 前行の改行コード(LF)が、次の行頭のデータに 連結されてしまいます 列Aに、ということですね。 CLEAN関数を使用します。 1.列Aと列Bの間に一列挿入 2.セルB1に式[=clean(a1)]を入力 3.セルB1を下方向に必要なだけコピー(右下黒い四角をダブルクリックでも可) 4.列B全体をコピーし、「形式を選択して貼り付け」-「値」で変換 5.必要に応じて列Aを削除 でいかがでしょう?
補足
すみません。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の改行コードを除きたいです。 初心者ですみません。よろしくお願いします。
お礼
ご丁寧にありがとうございました。 早速、試してみます。
補足
Application.WorksheetFunction.Cleanで、解決できました。ありがとうございました。