投稿日 | : 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型の配列にデータをコピーする際、二重ループを使って
コツコツやっているのがちょっと気になるのですが、これはもう
どうしようもないですよね?