アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6.0 でCSVの取り込みをしています。

Dim objFso As FileSystemObject
Dim objTso As TextStream
Dim データ As Variant
Dim stArrayData() As String

Set objFso = New FileSystemObject
Set objTso = objFso.OpenTextFile(取込パス, ForReading)

データ = objTso.ReadLine

'配列に格納
stArrayData = Split(データ, ",")

'データの取得
データの取得 = stArrayData(0)


stArrayData(0)で、データが取得できますが、
ダブルコーテーションが付加された状態で取得がしたいのですが、できません。。

今は、「000」で取得しているのを、
「"000"」で取得したいのです。

なお、取込むCSVをテキストで開くと、
ダブルコーテーションはついていません。


また、そもそも、取込む際に、ダブルコーテーションを付加する方法があるのでしょうか?
それとも、取込んだ後に、ダブルコーテションを付加するのでしょうか?


ご教授宜しくお願いします。

A 回答 (1件)

EXCEL等で



000   "000"   000,000   "000,000

と言う文字列データを入力してCSVに書き出すと

000,"""000""","000,000","""000,000"

と言うCSVファイルが出力されます。

これを取り込んだ場合、データは

000   "000"   000,000   "000,000

の4つにならなければなりません。

>今は、「000」で取得しているのを、
> 「"000"」で取得したいのです。

では、CSVファイルに「"""000"""」って書かれていたら、つまり、EXCELで「"000"」と言う文字列を入力していたら、どういう文字列になるべきか、考えてみましょう。

正解は「"000"」でしょうか?それとも「""000""」でしょうか?

単純に

>'配列に格納
>stArrayData = Split(データ, ",")

では「データとしてカンマを入力したとき」に正常に動作しません。

http://excel-ubara.com/excelvba5/EXCEL111.html

の最初のサンプルも「データの中の"や,を考慮してないサンプル」であり、貴方のプログラムと同じで、正常に動作しません。

同じページの2番目のサンプルが「データの中の"や,を考慮しているサンプル」で、この2番目のサンプルのように作らないと、データを正常に読み込めません。

EXCEL等で

000   "000"   000,000   "000,000

と言う4つの文字列データを入力してCSVに書き出して

000,"""000""","000,000","""000,000"

と言うCSVファイルを作り、このCSVファイルを読み込んで、元通り4つの

000   "000"   000,000   "000,000

と言うデータが取り込めれば「正常」です。

もちろん「自分で勝手に”を付け足す」なんて事はやってはいけません。

そんなことをしたら、元々のデータに”があったのか、それとも貴方が勝手に付け足したのか、判らなくなってしまいます。
    • good
    • 0
この回答へのお礼

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

再度、試したところ、やりたいことが実現しました。

CSVの取り込みについて、いろいろ勉強になりました。

ありがとうございました。

お礼日時:2014/12/10 16:33

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

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


このQ&Aを見た人がよく見るQ&A