CSVファイルを二次元配列に格納したい
CSVファイルを配列に格納して、配列上で処理させたい場合があります。
よく使う処理のため、パーツ化しています。
CSVファイルを二次元配列に格納するサンプルコード
'■CSVを読込、二次元配列を作成する
Public Function call_CSVto2DArray(sFile As String, num1, num2)
Dim tmp1D As Variant
Dim tmp2D As Variant: ReDim tmp2D(num1, num2)
Dim buf As String, r As Long, c As Long
r = LBound(tmp2D)
Open sFile For Input As #1
Do Until EOF(1)
'■開いたCSVを1行づつ読み込んで、tmp1Dに入れる
Line Input #1, buf
tmp1D = Split(buf, ",")
'■開いたCSVの1行(tmp1D)をtmp2Dに入れていく
For c = LBound(tmp1D) To UBound(tmp1D)
tmp2D(r, c) = tmp1D(c)
Next c
r = r + 1
Loop
Close #1
'■tmp2Dを返す(余分な一次元の空白を削除しない場合)
call_CSVto2DArray = tmp2D
'■tmp2Dを返す(余分な一次元の空白を削除する場合)
'call_CSVto2DArray = Call_ArraySizeDown(tmp2D, r)
End Function
実際の使い方
Public Sub sample()
Dim sFile As String: sFile = "C:\vba\sample.csv"
Dim arr As Variant
arr = call_CSVto2DArray(sFile, 100000, 30) '100000の数字は想定される最大数でOK
End Sub
注意点
- num1は事前に余分に作成し、後で削除する事としています(その方が処理が速い)



コメント