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

投稿日: 2005/07/05(Tue) 10:45
投稿者はこ
Eメール
URL
タイトルRe: 動的二次元配列

るしぇさん

ご回答どうもありがとうございます。

最終的にお二人のご意見を参考にさせていただいて、CSVファイルから読込んだデータを
一旦すべてジャグ配列に格納してから、Variant型の二次元配列の再定義を行い、
Excelに一括出力することにしました。

Dim fnum            As Integer
Dim buf             As String
Dim csv_data()      As String
Dim cnt             As Long
Dim i               As Long
Dim tbl()           As Variant
Dim csv_buff()      As String
Dim output_data()   As Variant

'1行ずつ読込んで、ジャグ配列に一時格納
Do While Not EOF(fnum)
    Line Input #fnum, buf
    csv_data = Split("")
    csv_data = Split(buf, ",")
    If UBound(csv_data) <> -1 Then
        ReDim Preserve tbl(cnt) As Variant
        ReDim csv_buff(UBound(csv_data)) As String
        csv_buff = csv_data
        tbl(cnt) = csv_buff
        cnt = cnt + 1
    End If
Loop

'Variant型の二次元配列にコピーして、Excel出力
ReDim output_data(UBound(tbl), UBound(tbl(0))) As Variant
For i = 0 To UBound(tbl)
    For j = 0 To UBound(tbl(0))
        output_data(i, j) = tbl(i)(j)
    Next
Next
xlsSheet.Range("$A$2") _
    .Resize(UBound(output_data, 1) + 1, UBound(output_data, 2) + 1) _
    .Value = output_data

Variant型の配列にデータをコピーする際、二重ループを使って
コツコツやっているのがちょっと気になるのですが、これはもう
どうしようもないですよね?


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

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

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