「csvファイル」を「二次元配列」に入れる。

説明

このプロシージャは、引数として、「csvファイル名」と「二次元配列」を指定すると、csvファイルが配列に入ります

「二次元配列」は、参照渡しになっています。

'*******
'* csvファイルを二次元配列に入れる。20230710
'* csvFile:csvファイル名、フルパス
'* arr:出力される配列は、参照渡し。配列は、モジュールレベル変数としている。
'* 文字コードは、「Shift_JIS」対応。途中の改行に注意必要。
Private Sub csv_to_array(ByVal csvFile As String, ByRef arr As Variant)
    'CSVファイルのパスを指定
    Dim filePath As String
    filePath = csvFile
    
    'CSVファイルを開く
    Open filePath For Input As #1
    
    '配列を宣言
    Dim dataArray() As String
    Dim rowCount As Integer
    Dim colCount As Integer
    
    'CSVファイルからデータを読み込む
    Dim i As Integer
    Dim line As String
    i = 1
    Do Until EOF(1)
        Line Input #1, line
        
        '最初の行の場合、列数をカウントする
        If i = 1 Then
            colCount = UBound(Split(line, ",")) + 1 'カンマ区切りで分割して、配列の上限を取得
        End If
        
        '行数をカウントする
        rowCount = rowCount + 1
        
        ' 行列を逆の配列を作成。ReDimは、1行づつの追加ができないため
        '配列をリサイズしてデータを格納する
        ReDim Preserve dataArray(1 To colCount, 1 To rowCount)
        Dim j As Integer
        For j = 1 To colCount
            dataArray(j, rowCount) = Split(line, ",")(j - 1) '配列にデータを格納する
        Next j
        
        i = i + 1
    Loop
    
    'CSVファイルを閉じる
    Close #1
    
    ' 行列変換関数を使用
    arr = TransposeArray(dataArray)
    
End Sub

以下が使用例です。

Dim arr() As Variant

Private Sub テスト、CSVファイルを二次元配列に()
    Call csv_to_array(ThisWorkbook.Path & "\sample8.csv", arr)
End Sub

上記のcsvファイルは、以下です。

以下のように、csvファイルが配列に入ります。

    ' 行列変換関数を使用
    arr = TransposeArray(dataArray)

この関数は、以下を参照してください。

区切り文字がカンマ以外にも対応したマクロは、以下を参照してください。

本サイトに関連ある記事一覧

Follow me!

「csvファイル」を「二次元配列」に入れる。” に対して1件のコメントがあります。

コメントを残す