<CSV to Array> 「CSV」を「配列」へ。Open使用。
説明
このプロシージャは、引数として、「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)
この関数は、以下を参照してください。
区切り文字がカンマ以外にも対応したマクロは、以下を参照してください。
“<CSV to Array> 「CSV」を「配列」へ。Open使用。” に対して1件のコメントがあります。