dポイントプレゼントキャンペーン実施中!

いつも皆様ありがとうございます。
ExcelのVBAで、以下の仕様のテキスト・ファイルを1行ずつ読み込もうとしています。

【仕様】
・1行は1つ以上のスペースで区切られた複数の値から成る。
・値中に、半角カンマが含まれる場合がある。

値中にカンマが存在しない場合は、問題なく改行まで読み込まれるのですが、カンマがあるとそのカンマ以降のデータが読み込まれません。

Dim intFF As Integer 'FreeFile値
Dim strFileName As String 'ファイル名
Dim strRec As String '1行の読み込み内容

strFileName = "TEST.txt"
intFF = FreeFile
Open strFileName for Input As #intFF

Do Until EOF(intFF)
Input #intFF, strREC ' ※1
・・・(省略)

上記※1のコード実行後にstrRECの中を見ると、カンマ以降の文字列が読み込まれていません。

例えば「A BB CCC DDDD」というデータの場合は問題なくそのままの値がstrRECの中に入っていますが、「A BB CC,C DDDD」というデータだと「A BB CC」というようになってしまいます。

Inputステートメントについて調べましたが、区切り文字に関する記述がなかったので困っています。

もし原因をご存知の方がいらっしゃいましたらお教えいただけないでしょうか。
よろしくお願いいたします。

A 回答 (2件)

Input #intFF, strREC



LineInput #intFF, strREC
にしてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ありません。
Line Input に修正したら解決しました!
ありがとうございます!

お礼日時:2006/10/02 16:19

Input #filenumber, varlist



varlist:データを格納するための変数。一つまたは複数カンマ(,)で区切って指定。

「各データ項目の間にカンマ (,) が挿入されます」というMSDNライブラリの説明があります。
Inputステートメントは、そういうデータ構造に対応しているという訳です。
ですから、変数リストが既知であれば、

Input #intFF, strREC(0,0),strREC(0,1),strREC(0,2)

と書くと、それぞれに対応する変数に読み込みます。
まあ、1980年代のコードです。

*****

なお、Microsoft scripting runtime を参照させれば非手続き的に読む込むことが可能です。

  Dim I    As Integer
  Dim N    As Integer
  Dim strRec() As String

  strRec()=FileReadArray("Test.txt")
  N=UBound(strRec())
  For I = 0 To N
    Debug.print strRec(I)
  Next I

※FileReadArray関数は過去の回答に多々出てきますので、それを参照して下さい。
    • good
    • 0

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