- 締切済み
csvのデーターファイルから任意の行をエクセルファイルへ入力するエクセ
csvのデーターファイルから任意の行をエクセルファイルへ入力するエクセルVBA が上手くできません。 6列2000行のcsvデーターのテキストファイルの作成は、色々な参考書があり成功しました。次に このcsvのデーターファイルから任意の複数行をシート4などの任意のワークシートの任意の場所に60行程度をインポートして、この60行の数値データーを加工しようとしていますが、入力が上手くできません。数値データーの加工のプログラムは一応できているため、その様式にあわせて、所定の場所にデーターを入れる必要が有ります。 1列目には日付(シリアルの数値にしています)、その他はすべて数値(LONG型)です。エクセルは2003を使用しています。 VBAの初心者です。宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nagare
- ベストアンサー率33% (280/831)
回答No.2
>何故だか分かりませんが、X(1)とsaisyuubiを直接比較しますと、動きませんでした。 おそらくお互いの変数の型が違うためと思います Dim X(1 To 5) As Variant saisyuubiはInteger? X(1)を一旦saisyuubiと同じ型の変数の入れて比較すればいけると思います
- nagare
- ベストアンサー率33% (280/831)
回答No.1
1行目から1行単位で読み込み、該当行をシートに出力 となります (指定行の読み込みはできません) このサンプルソースの"変数 lngREC"で制御すればできます http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_020.html
お礼
早速の返信有難う御座います。 次のように書いて無事プログラムが始動しました。 GYO = 2 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコードを読み込む Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6) ' 行を加算しA~F列にレコード内容を表示(先頭は2行目) Range(Cells(GYO, 1), Cells(GYO, 6)).Value = X ' 配列渡し If Cells(GYO, 1) >= saisyuubi Then GYO = GYO + 1 If GYO > 56 Then Exit Do End If Loop ' 指定ファイルをCLOSE Close #intFF 何故だか分かりませんが、X(1)とsaisyuubiを直接比較しますと、動きませんでした。それで 一度エクセルシートに書き出して、それを比較する事で動き出しました。 X(1)の状態で比較できたりすると書き出す手間が省けて良いのですが、それは無理なのでしょう。 有難う御座いました。