ADOを使ってExcelからAccessデータを利用してみよう

Excelから直接Accessデータベースに接続して、レコードを表示してみましょう。
今回はを使ってAccessに接続し、指定したテーブルのレコードを全てExcelに表示するといった、お手軽なサンプルです。
それでは一覧の流れを説明していきます。
Accessのテーブルを作成
今回のサンプルではテーブル名を[T_item]として作成します。テーブルデザインや入力内容は以下の通りです。
ExcelからAccessのテーブルをADOで読み込む為の設定
Excelを起動し、VBE(Visual Basic Editor)を[Alt]+[F11]で起動し、ツール(T) → 参照設定(R) をクリックして下さい。
参照設定のウィンドウが開いたらMicrosoft ActiveX Data Objects 2.X Libraryにチェックを入れます。
テーブルをADOで読み込む為のVBAコード
[データ読込]ボタンのクリック時のVBAは以下の通りです。
Sub DB_Read()
Dim adoCON As New ADODB.Connection
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim odbdDB As Variant
Dim wSheetName As Variant
Dim i As Integer
'カレントディレクトリのデータベースパスを取得
odbdDB = ActiveWorkbook.Path & "\sample.accdb"
'データベースに接続する
adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & odbdDB & ""
adoCON.Open
'DB接続用SQL
strSQL = "SELECT T_item.* FROM T_item ORDER BY T_item.ID;"
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenDynamic
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
'スタート行をセット
i = 3
'テーブルの読み込み
Do Until adoRS.EOF
With Worksheets(wSheetName)
.Cells(i, 1).Value = adoRS!ID
.Cells(i, 2).Value = adoRS!商品名
.Cells(i, 3).Value = adoRS!品番
.Cells(i, 4).Value = adoRS!単価
.Cells(i, 5).Value = adoRS!入数
End With
i = i + 1
adoRS.MoveNext
Loop
'クローズ処理
adoRS.Close
Set adoRS = Nothing
adoCON.Close
Set adoCON = Nothing
End Sub
VBAソースの解説
- Excelブックと同じフォルダ内にあるAccess[sample.accdb]のフルパスを取得する。
10行目でActiveWorkbook.Pathを使いExcelのフォルダを取得します。odbdDB = ActiveWorkbook.Path & "\sample.accdb"
- データベースに接続します。
13~15行目でAccessデータベースに接続します。
尚、今回のアクセスのバージョンは2007以降(2016まで確認)の為、providerにMicrosoft.ACE.OLEDB.12.0を指定しましたが、2000~2003の場合はMicrosoft.Jet.OLEDB.4.0を指定して下さい。adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & odbdDB & "" adoCON.Open - レコードセットを開きます。
21行目のOpenメソッドでSQL(18行目)を実行しレコードセットを開きます。adoRS.Open strSQL, adoCON, adOpenDynamic
パラメーター等の解説はmsdnをご参考下さい。
- テーブル内のデータを全てExcelに出力します。
30~40行目にかけてDo Until Loopを使って繰り返しレコードをExcelに出力します。Do Until adoRS.EOF 'レコードセットが終了するまで処理を繰り返す With Worksheets(wSheetName) .Cells(i, 1).Value = adoRS!ID .Cells(i, 2).Value = adoRS!商品名 .Cells(i, 3).Value = adoRS!品番 .Cells(i, 4).Value = adoRS!単価 .Cells(i, 5).Value = adoRS!入数 End With i = i + 1 '行をカウントアップする adoRS.MoveNext '次のレコードに移動する Loop - 最後にデータベースをクローズします。
Closeメソッドを使いレコードセットとADOコネクションオブジェクトを閉じます。
また、それぞれの変数にNothingをセットしてクリアします。adoRS.Close: Set adoRS = Nothing adoCON.Close: Set adoCON = Nothing
以上、今回はExcelからAccessにADOを使って接続する方法でした。
今回のサンプルファイルは以下のリンクからダウンロード可能です。








“ADOを使ってExcelからAccessデータを利用してみよう” に対して1件のコメントがあります。
コメントは受け付けていません。