CSVファイルに接続しその内容(Recordset)を取得 CSVファイル(外部ファイル)に接続し、SQLステートメントで必要な情報のみに絞ったレコードセットを取得 以下のうちどちらの書き方でもOK ・ステートメント Text;HDR=NO' → 1行目はデータとして認識 カレントプロジェクトのデータベースに接続する場合の記述 ▼実行結果▼
今回の記述に関する前情報
何を行うか
カンマ区切り形式のデータであれば.txtのファイルでも同じようにレコードセットの取得が可能利用時の書式
・ConnectionオブジェクトのOpenメソッドの引数にそれ用の接続文字列を設定する場合
Connectionオブジェクト変数.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = フォルダのパス; Extended Properties = 'Text;HDR=NO'"
Set Recordsetオブジェクト変数 = Connectionオブジェクト変数.Execute("SELECT * FROM csvファイル名.csv")
・ConnectionオブジェクトのConnectionStringプロパティにそれ用の接続文字列を代入してからOpenする場合
Connectionオブジェクト変数.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = フォルダのパス; Extended Properties = 'Text;HDR=NO'"
Connectionオブジェクト変数.Open
Set Recordsetオブジェクト変数 = Connectionオブジェクト変数.Execute("SELECT * FROM csvファイル名.csv")
記述例における利用パーツ
→Do Loop
・プロパティ
→Field
・メソッド
→MoveNext / Open / Close
注意点
書式 SELECT FROM ファイル名.csv WHERE フィールド名 = 値
Text;HDR=YES' → 1行目はフィールド名として認識
書式 SELECT FROM [ファイル名.csv] WHERE [ファイル名#csv].列番号 = 値
※フィールド名があるのにNOにすると、カラム名とデータの、それぞれのデータ型が異なっているとカラム名(1レコード目)がNullになって読み込まれる
※列番号は「F1」「F2」のように、あたまにFをつけて記述する
【実践】CSVファイルに接続する記述例
デスクトップ上にあるCSVファイル「yubin_data.csv」に接続してRecordsetを取得し
左から4つのフィールドのみをイミディエイトウィンドウに表示
▼取得対象ファイル「yubin_data.csv」▼
▼記述例▼
Sub read_csv()
Dim CNT As ADODB.connection
Dim RST As ADODB.Recordset
Set CNT = New ADODB.connection
CNT.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\user\デスクトップ\; Extended Properties='Text;HDR=NO'"
Set RST = CNT.Execute("SELECT * FROM yubin_data.csv")
Do Until RST.EOF
Debug.Print RST.Fields(0), RST.Fields(1), RST.Fields(2), RST.Fields(3)
RST.MoveNext
Loop
RST.Close: CNT.Close
Set RST = Nothing: Set CNT = Nothing
End Sub