【初月無料キャンペーン中】gooドクター

PHPで作成したプログラムからCSV形式でデータを出力し
MSエクセル2000のVBAで取り込んでいます。

データに「,」があるとデータが分割されてしますため
「""」で囲んだところ上記の問題は解決しました。

しかし、今度は「"」部分でデータが分割される現象が起こっています
エスケープ方法、または他の解決方法はありますでしょうか?


 (1)「あいう,えお」→「あいう」「えお」に分割される
 (2)「"あいう,えお"」→「あいうえお」で問題ない
 (3)「"あい"う,えお"」→「あい」「う,えお」に分割される
 (4)「"あい'う,えお"」→「あい」「う,えお」に分割される
 (5)「あいう"えお」→「あいう"えお」で問題ない

「,」が解決すると「'」「"」問題が生じ、逆も又同じで困っています

以上、ご教授よろしくお願いします

gooドクター

A 回答 (3件)

こんばんわ。



ExcelでCSVデータを取り込むと、ご質問の例のようにはなりませんが、「"」(ダブルクォーテーション)、「,」(カンマ)を組み合せたデータでは、意図しない区切りになる事は確かです。

「あいう,えお」→「あいう」「えお」
「"あいう,えお"」→「あいう,えお」
「"あい"う,えお"」→「あいう」「えお"」
「"あい'う,えお"」→「あい'う,えお」
「あいう"えお」→「あいう"えお」

上のようになります。

ご存知と思いますが、CSVデータは、データとデータの区切りに「,」を使っています。
また、Excelでは、データの先頭に「"」があると、「"」を取り込まずに、「"」と「"」の間を文字データとして取り込みます。
そのため、上の左のデータを取り込めば、上の右のようになると思います。
私のパソコン環境(WinXP Pro,Excel2000)では、そうなります。

それを前提に、対策を取るとすれば、データ内の「,」を別の文字に変えておいて、Excelに取り込んだ後に「,」に戻すのはどうでしょう。

例えば、下の右のように「,」を「゜」に変えて置き、Excelに取り込み後、「゜」を「,」に戻す、です。

「あいう,えお」→「あいう゜えお」
「"あいう,えお"」→「"あいう゜えお"」
「"あい"う,えお"」→「"あい"う゜えお"」
「"あい'う,えお"」→「"あい'う゜えお"」

Excelに取り込み後、「,」に戻すコードは、以下の通りです。

Cells.Replace What:="゜", Replacement:=","

もし、「'」が問題になるようでしたら、「'」を「^」に変えて、

「"あい'う,えお"」→「"あい^う゜えお"」

Excelに取り込み後、下のコードで、戻せばよいでしょう。

Cells.Replace What:="゜", Replacement:=","
Cells.Replace What:="^", Replacement:="'"
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます
別の文字に置き換えるで対応しました。

お礼日時:2005/12/20 10:44

(3)「"あい"う,えお"」


"あい""う,えお"
で問題ないと思います。
(4)「"あい'う,えお"」
分割されませんでした。
    • good
    • 0

よくわかりませんが,


「,」ではなく「Tab(\t)」でセル分け(列分け)をすれば良いのではないでしょうか?

どちらもCSVファイルとしてExcelに認識されますよ。

(PHPもVBAもほとんどわかっていない者です。)
    • good
    • 0

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

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

gooドクター

人気Q&Aランキング