Excel VBA 構造体 複数の列のセルの値をCSVファイルにエクスポート

本日は、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ファイルへのエクスポートの方法でした。

タイトルとURLをコピーしました