Home » ADO(ActiveX Data Objects)の使い方 » Recordsetのフィールド名・列名を取得する

Recordsetのフィールド名・列名を取得する

動作検証バージョン:Windows版Excel(バージョン1810 ビルド11029.20079)+ Microsoft ActiveX Data Objects 6.1 Library

「vb6 Recordset フィールド確認」
という検索キーワードでのアクセスに気が付きました。

Visual Basic 6.0で、Recordsetのフィールド名を取得したいということでしょうか。

[スポンサードリンク]

Recordsetのフィールド名を取得するサンプルマクロ

VB6ということですから、VBAのSubプロシージャが参考になるはずです。

Sub Recordsetのフィールド名を取得する()
 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

 rs.Close: cn.Close
 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のフィールド名・列名を取得する

Copyright © インストラクターのネタ帳 All Rights Reserved.

.