Excel VBAでCSVファイルを構造体で読み取る

本日は、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ファイルのデータを構造体で読み取る方法について紹介いたしました。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。