本日は、Exel VBAの構造体の使用例について解説いたします。
仕事で下記のような一覧表から特定のセルの値だけを読み取り、CSVファイルにエクスポートしたい時にVBAを使います。
部署や氏名が記載されたExcelファイルです。
Excel VBA 構造体を使う
上記の表の中からBとCとD列の情報だけをCSVにエクスポートします。
データが入っているのは、3行目から10行目です。
今回は、構造体を使うのでまずは構造体を定義します。
構造体は、複数の変数をグループ化することができます。
標準モジュールを追加し、下記のように定義します。
Public Type Data
Column1 As String
Column2 As String
Column3 As String
End Type
続いて、Excelシートからデータを読み取り、構造体の変数に格納します。
Sub test()
Dim myArray() As Data
ReDim myArray(1 To 10)
Dim FileNum As Integer
Dim FileName As String
FileName = "C:\data.csv"
FileNum = FreeFile()
For i = 3 To 8
myArray(i).Column1 = Cells(i, 2).Value 'B列の課名
myArray(i).Column2 = Cells(i, 3).Value 'C列のNo
myArray(i).Column3 = Cells(i, 4).Value 'D列の氏名
Next i
end sub
最後に、構造体の変数をCSVファイルにエクスポートします。
Open FileName For Output As #FileNum
For i = 3 To 8
Print #FileNum, myArray(i).Column1 & "," & myArray(i).Column2 & "," & myArray(i).Column3
Next i
Close #FileNum
下記が全体のコードになります。
実行して、c:\data.csvを開いてみましょう。
取り出したいデータができています。
まとめ
本日は、ExcelVBAの構造体を使ったデータの取得とCSVファイルへのエクスポートの方法でした。