ADOでExcelファイルに接続
ADO を使用してExcelファイルを読み込みます。Excelファイルをデータベースとみなし、SQL文を使うことが出来ます。
【接続文字列】
<ConnectionString(ADO)に設定する文字列>
Provider = OLEDBProvider
Data Source = DBFileName;
Extended Properties = EXProperties;
引数・戻り値
- DBFileName ・・・ 対象となるExcelファイルのパスとファイル名を指定します。)
- OLEDBProvider ・・・ Excel2007以降で作成したブックに接続する場合は、Microsoft.ACE.OLEDB.12.0;、Excel2002/2003で作成したブックに接続する場合は、Microsoft.Jet.OLEDB.4.0; を指定します。
- EXProperties ・・・ 3つのプロパティ値を指定します。各プロパティ値は「;(セミコロン)」で区切ります。全体を「”」で括ります。
(例)Extended Properties = “Excel 12.0;HDR=Yes;”
Extended Properties に指定する各プロパティ値について
・Excel 12.0 の部分は、データベースの種類を表しています。Excel2007以降で作成したブックに接続する場合は、Excel 12.0、Excel2002/2003で作成したブックに接続する場合は、Excel 8.0 を指定します。
・HDR は、シートの1行目をフィールド名として扱うかどうかを指定します。No を指定した場合、フィールド名は、F1、F2、F3 のように F[列番号] で表示されます。
Excelのシート、セル範囲を、テーブルとして扱います。
ワークシート全体:Select * from [Sheet1$]
名前なしセル範囲:Select * from [Sheet1$A2:E10]
名前付きセル範囲:Select * from 範囲名
Excelファイルへ接続する例
サンプル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 |
Sub Sample_ADO_Excel() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim EXProperties As String Dim constr As String Dim DBFile As String Dim strSQL As String Dim i As Long Dim j As Long DBFile = ActiveWorkbook.Path & "\mydb1.xlsx" EXProperties = """Excel 12.0;HDR=No;""" constr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & DBFile & ";Extended Properties=" & EXProperties cn.ConnectionString = constr cn.Open strSQL = "Select * from [mydb1$];" rs.Source = strSQL rs.ActiveConnection = cn rs.Open With Worksheets("excel") .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 |