データの出力においてCSVファイルが使われているケースが多くあると思います。
そのまま、EXCELなどで開いて処理をすることが最も簡単なのですが、必要な情報に絞って抽出して後続の処理につなげると便利なケースがあると思います。
そのようなケースでの処理について紹介します。
先頭行を連想配列のキーとして登録し、2行目以降をキーに関連づけてデータ登録をします。以下のサンプルコードのBEGIN~END内で先頭行で処理したい列を個別に指定して処理することができます。
(本記事にたいする質問やお問合せ・IT改善のご相談はこちら)
Dim title_dic As Object
Sub main()
Dim l_data As String
Dim l_param As Variant
Dim csv_line As String
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename(",*.csv")
If OpenFileName <> "False" Then
Open OpenFileName For Input As #1
Set title_dic = CreateObject("Scripting.Dictionary")
csv_line = 0
Do Until EOF(1)
Line Input #1, l_data
If csv_line = 0 Then
SetKey (l_data)
Else
SetParam (l_data)
' Begin 個別処理をしたいデータ
' MsgBox (title_dic.Item(※ここを処理したいタイトル※))
' END 個別処理をしたいデータ
End If
csv_line = csv_line + 1
Loop
Set title_dic = Nothing
Close #1
Else
MsgBox "ファイルが指定されませんでした"
End If
End Sub
Sub SetKey(l_data As String)
Dim l_params As Variant
Dim param_data As Variant
l_params = Split(l_data, ",")
For Each param_data In l_params
' 先頭行を連想配列のキーとして登録する
title_dic.Add param_data, ""
Next param_data
param_column = 0
End Sub
Sub SetParam(l_data As String)
Dim l_params As Variant
Dim param_data As Variant
Dim param_column As Integer
param_column = 0
l_params = Split(l_data, ",")
For Each param_data In l_params
' 2行目以降のデータを連想配列のデータとして登録する
title_dic.Item(title_dic.Keys()(param_column)) = param_data
param_column = param_column + 1
Next param_data
End Sub