配列(一次元/二次元)

CSVファイルを二次元配列に格納する【ExcelVBA】

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

関連記事

コメント

タイトルとURLをコピーしました