本日は、ExcelVBAでCSVファイルを構造体で読み取る方法について解説します。
読み取るCSVファイルは下記の内容です。
構造体の準備
最初に構造体を定義します。
Type MyStruct
Field1 As String
Field2 As Integer
Field3 As Double
End Type
ファイルを開き、値を取得
続いて、CSVファイルを開きます。
Open "ファイル名.csv" For Input As #1
最初にLine Input で行ごとにデータ読み取り、
その後splitメソッドを使い、行データをカンマ毎に分けてarr変数に入れます。
3カラムあるので、0~2のデータを構造体の変数に代入します。
Dim myArray() As MyStruct
Dim i As Integer
Do Until EOF(1)
ReDim Preserve myArray(i)
Line Input #1, line
arr = Split(line, ",")
myArray(i).Field1 = arr(0)
myArray(i).Field2 = arr(1)
myArray(i).Field3 = arr(2)
i = i + 1
Loop
最後にファイルを閉じます。
Close #1
では、実行します。
ローカルウィンドウを表示して、各変数に値が入っていることを確認します。
ローカルウィンドウは、表示→ローカルウィンドウを選択すると表示できます。
構造体変数に正しく値が入っていることが確認できます。
また、構造体変数のデータの確認方法として、For分とUBoundとLBound関数を使うことで一気に読みだせます。
Dim j As Integer '
For j = LBound(arr) To UBound(arr)
MsgBox myArray(j).Field1 & myArray(j).Field2 & myArray(j).Field3
Next j
End Sub
まとめ
本日は、ExcelVBAでCSVファイルのデータを構造体で読み取る方法について紹介いたしました。