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は事前に余分に作成し、後で削除する事としています(その方が処理が速い)
コメント