CSVファイルに接続(ADO)
ADOでCSVファイルに接続
ADO を使用してCSVファイルを読み込みます。CSVファイルをデータベースのテーブルとみなし、SQL文を使うことが出来ます。
<ConnectionString(ADO)に設定する文字列>
Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = DBFileName;
Extended Properties = EXProperties;
引数・戻り値
- DBFileName ・・・ 対象となるCSVファイルのパスを指定します。(※ファイル名は不要です。また、パスの最後には「\」が必要です。)
- EXProperties ・・・ 3つのプロパティ値を指定します。各プロパティ値は「;(セミコロン)」で区切ります。全体を「”」で括ります。
(例)Extended Properties = “Text;HDR=Yes;FMT=Delimited”
Extended Properties に指定する各プロパティ値について
・Text は、データベースの種類を表しています(テキストファイル)。
・HDR は、CSVファイルの1行目をフィールド名として扱うかどうかを指定します。No を指定した場合、フィールド名は、F1、F2、F3 のように F[列番号] で表示されます。
・FMT は、ファイルのフォーマットを指定します。CSVファイルの場合、Delimited を指定します。
CSVファイル名は、テーブル名として扱います。
(例)Select * from [CSVファイル名];
CSVファイルへ接続する例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
Sub Sample_ADO_CSV() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim constr As String Dim DBFilePath As String Dim DBFileName As String Dim EXProperties As String Dim strSQL As String Dim i As Long Dim j As Long DBFilePath = ActiveWorkbook.Path & "\" DBFileName = "mydb1.csv" EXProperties = """Text;HDR=Yes;FMT=Delimited""" constr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & DBFilePath & ";Extended Properties=" & EXProperties cn.ConnectionString = constr cn.Open strSQL = "Select * from " & DBFileName & " order by ID;" rs.Source = strSQL rs.ActiveConnection = cn rs.Open With Worksheets("csv") .Cells.Clear i = 1 Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs.Fields(j).Name .Cells(i + 1, j + 1) = rs(j).Value Next j rs.MoveNext i = i + 1 Loop End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |
実行結果
関連記事
-
データベース(SQL Server)に接続する(ADO)
データベース(SQL Server)に接続 ODBC または OLE DB で接 …
-
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
-
トランザクション(ADO)BeginTrans、CommitTrans、RollbackTrans
ADO でのトランザクション処理 【書式】 Sub Sample_Transac …
-
レコードの削除(ADO)Delete メソッド
データベースのレコードを削除する Delete メソッド カレントレコードを削除 …
-
Recordset オブジェクト内のレコード数(ADO)RecordCount プロパティ
RecordCount プロパティ Recordset オブジェクトのレコード数 …
-
レコードを並べ替える(ADO)Sort プロパティ
データベースのレコードを並べ替える Sort プロパティ 【書式】 object …
-
フィールド名(ADO)Fields コレクション
Fields コレクション Recordset オブジェクト内の1つ以上の列(フ …
-
フィールド名(ADO)Field オブジェクト
Field オブジェクト Recordset オブジェクト内の列(フィールド)を …
-
BOF プロパティ・EOF プロパティ(ADO)
EOF プロパティ・BOF プロパティ BOF プロパティは、カレントレコードの …
-
Excel VBA のクラスを使ってデータベースへ接続する(ADO)
データベースの処理をクラスモジュールに書く ExcelVBAで、クラス使用する方 …