• ベストアンサー

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

  • 【VB6】項目内に改行コードを含むCSVファイルの読み込み

    いつもお世話になっております。 現在VB6.0にて、CSVファイルを読み込む処理をしています。 ・ファイル読み込みにて1行ファイルを読み込む。 ・Split関数で「,」で区切って項目ごとに配列に保持する。 というロジックで作成しているのですが、 項目内に改行コードが存在する場合にうまく読み込めません。 (1行ずつ読んでるので当然ですが…) 項目内のコードをLF、実際の行の改行をCR+LFで区別すると読み込む のは分かるのですが、項目内の改行コードがCR+LFの場合でも、 正しく読み込みたいです。 以上です。よろしくお願い致します。

  • CSVファイルの改行コードを確認したい

    お世話になります。 AccessにてCSVファイルの特定の行を読み込みたいと考えております。 http://questionbox.jp.msn.com/qa8769403.html とりあえず読み込むことは出来たのですが、実データで試したところエラーとなってしまいました。 調べたところ、改行コードにはいくつか種類があり、恐らくLFコードであるために読み込みできないものかと思われます。 なお、実データをExcelで開き上書き保存すると読み込みできるようになるので、上書き保存したタイミングでLFがCR/LFに変わったのではないかと思われます。 で、質問としては実データの改行コードが本当にLFなのかどうかを確認したいのですが、どうやって確認すればよいのでしょうか。 ご教授の程、宜しくお願い致します。

  • csvダウンロードで改行コードを指定する事は可能?

    画面から「csvダウンロード」というボタンを押すと、 javaが動いてcsvファイルのダウンロードができるのですが 改行コードがLFになってしまいます。 改行コードCR+LFにしたいのですが・・・。 恐らくサーバがUNIXだからだと思うのですが javaでcsvファイル作製時に改行コードを 変更もしくは指定する事は可能でしょうか? どなたかご教授ください。 よろしくお願いします。

  • 改行コード

    Sn Uploaderと言う所でupload.cgiを 落としたのですがエラーが出ます。 多分改行コードが原因だと思うのですが、 upload.cgiの改行コードをLFにする仕方が分かりません。 windowsの場合は秀丸エディタでファイル→エンコードの種類 改行=LFにすれば良いのは分かりますが、 Linuxでは如何すれば良いのでしょうか? 全くの素人ですが宜しくお願いします。

  • 改行コードについて

    改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします

  • 改行コードについて

    こんにちは。 私はFedoraCore3を使用しています。 SSH接続でPoderosaを使いはじめてかなり経つのですが サーバーを立ててからずっと改行コードをCRでやっていました。 で、最近Linuxの改行コードはLFという事を知りました。 今の所、CRでやっていて 改行されなかったりする事もなく特に異常は ないのですがこのままCRでやってても問題ないのでしょうか? それとも、これからはLFでやったほうがいいですか? もう一つなんですがこの改行コードというのは viで編集しているの時は関係ないのですか? (今まで異常がないため) よろしくお願いします。

  • 改行コード変換

    先に「chompの使い方」で質問したものです。 文字コードを調べたところ、改行が「^M」で表示されていました。 テキスト文書ファイルもCGIプログラムも文字コードはEUCにしてありますし、改行コードもLFにしているんですが、フォームで入力される改行コードはCR+LFになっているようです。 これはどうやって制御すれば(全ての改行をLFにする)よいのでしょうか? ご教示いただけるとうれしいです。よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • 【テキスト】改行コードCR+LFの時だけ改行したい

    こんにちは。 HTMLを記述したテキストを含むCSVファイルを、 メモ帳で開くと1行で表示されるのですが、 それをexcelや、テキストエディターで開くと メモ帳で改行していないところで改行されてしまいます。 おそらく、テキストエディターでHTMLを書いた部分は途中で改行されないのですが、 Dreamweaverで書いた部分で改行が入っている様なのです。 調べると、改行コードというのがいくつかあり、メモ帳では改行されないが、 その他の高機能エディターでは改行するコードがあり、 それが途中に入っている様な感じです。 メモ帳で開く様に、改行コードCR+LFの時だけ改行して、 改行していないところでは改行を入れないで開きたいのです。 この、「メモ帳では改行しない改行コード」だけを取り除いて保存することはできるのでしょうか。 高額なテキストエディターでは、そのような事ができるようなのですが、 できればフリーソフトで完結したいです。 よろしくお願いします。

  • Excelで改行が含まれたフィールドをcsvに変換する際改行を取る方法を教えてください

    ExcelをCSVファイルにする必要があり、レコードの形式を "aaa","bbb","ccc"改行コード にしたいいと考えております。(それぞれのフィールドに改行コードは不可) Excelファイル時に、改行を置換(Ctrl+JをNULLで置換)しCSVで保存しエディタで見ると改行が残っています。(CR-LFがCRに置換されているため) 使用しているエディタはEmエディタです。 Accessでインポートしたのちtxtでエクスポートしても結果は一緒でした。 フィールド内の改行だけを取る方法はありますでしょうか。

  • Adodbの改行コードについて

    お世話になります。 クライアントにAccessが無いのでAccessモドキを作るのが目的で CSVを読み込み編集しCSVを書き出すhtaを作成しているのですがAdodbで躓いてしまいました。 読み込んだCSVの仕様に準拠して書き出すのですが、 どうしても改行コードが上手く出力出来ず悪戦苦闘中です。 WriteTextで行区切り文字を指定していますが 指定していないとLFが出力されており、 現在の指定でもCRLFの後にLFが吐き出されています。 LFが邪魔で仕方ないのですが必ず出力されてしまうものなのでしょうか? 回答お待ちしております。 CSVの仕様 ・UTF-8 ・セル内改行コード:LF ・行区切り:CRLF ・全セル「"」括り 書き込みデータ ・配列:textArray (「"」括り、「,」区切り済み、1要素1レコード) /* * @param file : ファイルフルパス * @param textArray : 書き込み配列 * return boolean : 成功判定(失敗時エラーコード) */ function adodbLineout(file, textArray){ try{ var adbStrm = new ActiveXObject("ADODB.Stream"); adbStrm.Charset = 'UTF-8'; adbStrm.lineSeparator = -1; for(i=0;i<textArray.length;i++){ if(textArray[i] == ""){continue;} adbStrm.WriteText(textArray[i], 1); } adbStrm.SaveToFile(file); adbStrm.Close(); return false; }catch(e){ return e; } } 因みに疑似システムはマクロで既に組み上げていたりするので 「Excelで作れ」など別システムの推奨はご遠慮下さいませ。 (読み込みファイルはそのExcelで作成しています。)