これ何て呼びますか

宜しくお願いします。

CSVデータをダウンロードしてエクセルデータに直して、必要な箇所を変換し、別のCSVデータに作りかえる作業をしています。

元のデータには改行が入っており、作り変えたいデータは改行がだめなので、置換でCtrl+J→全角スペースでやりましたが、見かけ上は改行はなくなっているのですが、変換先のフォーマットてCSVに変換すると改行が入ってしまいます。

このやり方では、そのようなことがおこるのでしょうか?
何が悪いのか分かりません。。。
どこを直せばいいのか、また、他に何かよい方法があれば教えてください。

A 回答 (3件)

こんにちは。

Wendy02です。

当面、どこかのブックに、以下のようなコードを置いて、CSV ファイルから、問題のコードを削除してみてください。初歩的なコードですが、目的は果たせるような気がしています。

'<標準モジュールに貼り付けて、これもフォームのボタンにつけるとよいです。>

Sub CRLFCodeDeleting()
Dim c As Range
Dim buf As String
Dim bufeach As String
Dim i As Long
Application.ScreenUpdating = False
For Each c In ActiveSheet.Range("A1").CurrentRegion
 If Not IsEmpty(c.Value) Then
   buf = Application.Substitute(c.Value, vbCr, " ")
   buf = Application.Substitute(buf, vbLf, "")
   buf = Application.Substitute(buf, """", "")
  
   '半角カタカナのみを全角にするオプション開始
   If buf Like "*[" & Chr(166) & "-" & Chr(223) & "]*" Then
   For i = 1 To Len(buf)
    If Mid$(buf, i, 1) Like "[" & Chr(166) & "-" & Chr(223) & "]" Then
     bufeach = bufeach & StrConv(Mid$(buf, i, 1), vbWide)
    Else
     bufeach = bufeach & Mid$(buf, i, 1)
    End If
   Next i
   buf = bufeach
   End If
    bufeach = ""
   'オプション終わり
   c.Value = buf
   buf = ""
 End If
Next
Application.ScreenUpdating = True
End Sub


>エクセルにしてデータを保存する前に、CSVの時点で置換でctrlJをしないとだめですか?

その作業の後先については、当面関係ないと思っています。

>フォーマットにCSVになおすマクロのフォームボタンがあるのですが、それでCSVに変換したものをみると、改行があった あいうえお のあとで、次の行にいってしまっています。。。

ちょっと気になります。CSVになおすマクロって、もしかしたら、特殊なことをしている可能性がありますね。上のコードでダメな場合は、そのマクロを見させていただくようになるかと思います。

>JIS関数で全角になおして、それを値だけコピーしたものを、そのフォーマット(エクセル)にはりつけました。

そのインターネット用のプログラムは、このサイトでも、いくつか出来ていましたが、今回は、半角カタカナだけが対象にしました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
あまりシステムのことは詳しくないので、
会社のシステム作った人に聞いてみました。
""が全ての項目に入っていないから・・・みたいな説明でした。

お礼日時:2006/02/13 15:34

こんばんは。



自分で、Sampleデータを作ってみましたが、確信が持てません。

おそらく、元のデータは、
"abc
def",efg,hij

など、「" "」入りのはずです。できるだけ正確に、CSV のテキストのサンプルを提示していただけないでしょうか?

Excelにインポートした時に、「・」はついていますか?ついていませんか?

>Ctrl+J→全角スペースでやりましたが、見かけ上は改行はなくなっているのですが、

もしかしたら、Ctrl + J =Char(10) だけではないかもしれません。

例えば、このようにして、
=CODE(RIGHTB(A1,3))
戻り値が、「10」が出たとしたら、
=CODE(RIGHTB(A1,4))
にしたら、「13」が出てこないでしょうか?

こちらは、ワークシート上で試してみましたが、置換が出来ませんので、元から処理したほうがよいようです。

ご自分でされるなら、テキスト・エディタの正規表現やPerl を使えばよいし、こちらで解決されるのでしたら、VBAマクロコードを提供します。

この回答への補足

わかりにくくてすいません。
自社のCSVでの情報を、他のサイトにのせてもらうためのCSVに変換したいのです。
例えば、自分の会社が旅行会社とすると、旅行サイトに自分の会社のツアーの情報をのせてもらうために、自分の会社のCSVデータを、その旅行サイトのCSVのフォーマットに合うように変換しようとしています。

自社データでは、例えば

あいうえお
かきくけこ
さしすせそ

と、ひとつのセルに入っているものを、
置換でctrlJ→全角スペース として、
ひとつのセルに、

あいうえお かきくけこ さしすせそ

という表示になるようにしました。
で、半角の文字をいれるとエラーが出るので、JIS関数で全角になおして、それを値だけコピーしたものを、そのフォーマット(エクセル)にはりつけました。その状態では、フォーマットにはりつけた後も、見かけ上はひとつのセルに あいうえお かき・・・ とおさまっているのですが、フォーマットにCSVになおすマクロのフォームボタンがあるのですが、それでCSVに変換したものをみると、改行があった あいうえお のあとで、次の行にいってしまっています。。。

補足日時:2006/02/11 10:03
    • good
    • 0
この回答へのお礼

もしや、CSVにダウンロードした際に、エクセルにしてデータを保存する前に、CSVの時点で置換でctrlJをしないとだめですか?
それは関係ないですかね・・・

お礼日時:2006/02/11 10:11

>変換先のフォーマットてCSVに変換すると改行が入ってしまいます。


「変換先のフォーマット」とCSVの関係がよくわかりませんが、たとえばWordを用いて開いたときに全角スペースに置き換わっていれば、正常であると判断されます。
行と行の間の区切り(つまりレコードの区切り)の意味であれば当然改行は残ります。「Ctrl+J→全角スペース」はセル内改行の置換です。
「変換先のフォーマット」がインポートするアプリケーションのフォーマットの意味であれば、スペース区切りでインポートすれば、改行があったときのようになるかも知れません(アプリケーションがわからないので不確かです)。

全角スペースはわかりにくいので(特にExcelではわかりにくい)、アンダースコア等(使用している場合には別の文字、もしくはいくつかの文字の組み合わせ)を使用すると置換の確認が容易になると思われます。
    • good
    • 0

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