VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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しようとすると、
「インデックスが有効範囲にありません。」とエラーになってしまいます。

二次元配列の動的定義の仕方からして間違っているような気がするのですが、
よい解決方法がありましたら、ご教授いただけないでしょうか?

よろしくお願いします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -