餃子を食べるとき、何をつけますか?

あるシステムが吐くcsvファイルの項目の中に改行が入っているものがあります。

例)
01,aaa,bbb(改行)bbb,ccc(改行)
02,ddd,eee,fff(改行)
03,ggg(改行)ggg,hhh,iii(改行)

このCSVファイルをエクセルのマクロで読み込んでシートに展開したい
のですが、項目中にある改行で別レコードを認識してしまいます。

結果)
A B C D
---+---+---+---
01 aaa bbb 
bbb ccc
02 ddd eee fff
03 ggg
ggg hhh iii

これを以下のようにしたいのですが・・・
A B C D
---+------+------+----
01 aaa bbbbbb ccc
02 ddd eee fff
03 gggggg hhh iii

どうやればよいでしょうか?
ご教授お願いいたします。

A 回答 (3件)

う~ん、わたしならcsvを吐く「あるシステム」の方で、項目内の改


行とレコード終端の改行を区別出来るように設計しますけどね。
なにしろ「あるシステム」が項目内の改行を0x0dに置換してからcsv
として吐くようにしてやれば、excelに読み込むだけでセル内改行と
して認識するわけだし、違うコードにするとか削除するとかいう場
合もレコード終端と間違う心配がないから、適当なエディタで置換
一発ですよね。

今回の場合、削除すべき改行とレコード終端の改行を区別する基準
は「次の行の最初は数字か文字か」くらいしか思いつきません。VB
で処理しようとすると1レコード読むだけで面倒くさいループをグル
グル回さないとダメな気がします。Perlなど正規表現で置換の出来
る環境なら一瞬ですけどね。
    • good
    • 0
この回答へのお礼

そうですねぇ。

あるシステムは他社のものなので変更が出来ないそうです。
プログラムを全然分っていない担当者でしたのでこのような状況になってしまいました。おかげで困ってます(^^;

早々のご回答ありがとうございました。

お礼日時:2007/03/01 16:02

こんにちは。



>1レコードの項目数は固定されています

であればエクセルに取り込んだあと最終形式にするルーチンを
現在のマクロに追加すればいいのではありませんか?
 
行頭の項目は必ず、数値、と決まっていればそれを利用してもいいし。

以上です。
    • good
    • 0
この回答へのお礼

第一項目は数値とは決まっていないのでそれもなかなか難しいとは思いますが、一旦貼り付けてから編集すれば良いんですね。

参考になりました。ありがとうございます。

お礼日時:2007/03/02 09:40

ご質問に、《質問》して申し訳ございません。



この情報の場合、改行コードでレコードの区切りを判断できないとなると、機械的にレコードとレコードとを区切るための条件は何になりますか?

※無条件に改行コードを外してしまっても、1ファイル、1レコードになってしまいます。 レコードの区切りを示す改行コードは、そのまま残す必要があると思います。

この回答への補足

そうなんですよ。一応1レコードの項目数は固定されていますのでそれを手がかり(カンマの数など)にするしかないと思うのですが、その方法も分らずです。

やはり無理でしょうか・・・

補足日時:2007/03/01 15:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報