質問: エラーについて 以下のコードvbsをBATファイルから動かしたいのですが、10行目で エラーになります。
回答: a = Split(cv.ReadLine, ",") で strval = left(a(4), 2) が「インデックスが有効範囲にありません。」 になる原因は2つあります。 1つ目は、a(4)はa(0)から始まる1行のcsvの中で5番目のデータです。 そのため a,b,c,d,e の場合は"e"になります。 ここで「インデックスが有効範囲にありません。」になるのはデータが4個以下の場合です。 2つ目はcsvの最後が改行で終わっている場合は、最後のデータは空データになると言う事です。 つまり 1,2,3[改行] 4,5,6[改行] と言うデータの場合は 1,2,3 4,5,6 [空行] と3行になります。 どちらに場合もデータが4個無い場合に問題になるので 1.無い場合に備えて空データを用意 2.無い場合はスキップ のどちらかにします。 1.は >a = Split(cv.ReadLine, ",") を a = Split(cv.ReadLine & ",,,,", ",") 1.は >a = Split(cv.ReadLine, ",") >・・・略・・・ >cr.WriteLine Join(a, ",") >Loop を a = Split(cv.ReadLine, ",") If UBound(a) >= 4 Then ・・・略・・・ End If cr.WriteLine Join(a, ",") Loop にします。 場合によっては a = Split(cv.ReadLine, ",") If UBound(a) >= 4 Then ・・・略・・・ cr.WriteLine Join(a, ",") End If Loop にします。 エラーの原因がどちらかによっては、処理自体を変える必要があります。