「vb6 Recordset フィールド確認」
という検索キーワードでのアクセスに気が付きました。
Visual Basic 6.0で、Recordsetのフィールド名を取得したいということでしょうか。
Recordsetのフィールド名を取得するサンプルマクロ
VB6ということですから、VBAのSubプロシージャが参考になるはずです。
Dim f_path As String: f_path = "C:\temp\"
Dim f_name As String: f_name = "sample.csv"
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & f_path & ";" & _
"Extended Properties='Text; HDR=YES'"
Dim rs As ADODB.Recordset
Set rs = cn.Execute("SELECT * FROM " & f_name)
Dim fld As ADODB.Field
For Each fld In rs.Fields
Debug.Print fld.Name
Next fld
Set rs = Nothing: Set cn = Nothing
End Sub
1行目にフィールド名の入力されているCSVファイルsample.csvを、Cドライブのtempフォルダーに置いて、
Dim f_path As String: f_path = "C:\temp\"
Dim f_name As String: f_name = "sample.csv"
ADOへの参照設定が行われている環境で実行すると、フィールド名がイミディエイトウィンドウに出力されます。
フィールド名を取得する処理について
実際にフィールド名を取得・出力しているのは後半の、
Dim fld As ADODB.Field
For Each fld In rs.Fields
Debug.Print fld.Name
Next fld
です。
Fieldsコレクションに対して、
For Each~Nextループを回して、各FieldオブジェクトのNameプロパティを取得しています。
CSVにフィールド名が存在しない場合
もしCSVファイルの1行目にフィールド名が入力されておらず、
cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & f_path & ";" & _
"Extended Properties='Text; HDR=YES'"
の部分を、
cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & f_path & ";" & _
"Extended Properties='Text; HDR=NO'"
とした場合、F1・F2・F3といった仮のフィールド名が出力されます。
変数に格納されたRecordsetオブジェクトを確認しましょう
「vb6 Recordset フィールド確認」
と検索なさった方は、Recordsetオブジェクトについて、まだ具体的にイメージできない段階にいらっしゃるはずです。
拙著『いちばんやさしいExcel VBAの教本』でも多用しているローカルウィンドウで、オブジェクト変数rsの中身を覗いて、Recordsetオブジェクトがどのようなデータを持ったオブジェクトなのか確認しましょう。
実際のRecordsetオブジェクトを生成している、
Set rs = cn.Execute("SELECT * FROM " & f_name)
以降でブレークポイントを設定して、オブジェクト変数rsから、
Fields
└ Item 1
と展開していくと、下図のように上述のNameプロパティも見ることができます。
※上図はCSVファイルの1列目に「id」というフィールド名が設定されている状態です。
最終更新日時:2018-12-14 13:32
Home » ADO(ActiveX Data Objects)の使い方 » Recordsetのフィールド名・列名を取得する