投稿日 | : 2005/07/05(Tue) 07:57 |
投稿者 | : はこ |
Eメール | : |
URL | : |
タイトル | : 動的二次元配列 |
CSV形式のファイルからデータを読込み、Excelに帳票出力させようとしています。
こちらの掲示板の過去ログを参考にさせていただいたところ(記事No.3670)、
Excelに出力するデータを二次元配列に格納して、一気に出力すると高速に
処理できる、とのことでしたので、CSVファイルから読込んだデータを一度、
二次元配列に格納しようとしています。
CSVファイルの行数が何行あるかわからないため、一行読込むたびに二次元配列を
再定義したらよいのではないかと思い、
Dim fnum As Integer
Dim buf As String
Dim csv_data() As String
Dim output_data() As Variant
Dim cnt As Long
Dim i As Integer
Do While Not EOF(fnum)
Line Input #fnum, buf
csv_data = Split("")
csv_data = Split(buf, ",")
If UBound(csv_data) <> -1 Then
ReDim Preserve output_data(cnt, UBound(csv_data)) As Variant
For i = 0 To UBound(csv_data)
output_data(cnt, i) = csv_data(i)
Next
cnt = cnt + 1
End If
Loop
このようにしてみたところ、1回目のReDimは通るのですが、2回目にReDimしようとすると、
「インデックスが有効範囲にありません。」とエラーになってしまいます。
二次元配列の動的定義の仕方からして間違っているような気がするのですが、
よい解決方法がありましたら、ご教授いただけないでしょうか?
よろしくお願いします。