Excel(エクセル)VBAの関数、メソッド、ステートメント、プロパティの使用例やエラー発生条件などのサンプル・説明のまとめと定数やプロパティのまとめです。入門,初心者,初級レベルから始めています。
ExcelからAccessデータにADOを使って接続する
ExcelVBAでADO接続を使用してMSAccessのデータを取得する方法です。
ADOはActiveX Data Objectsの略でOLEDB(Object Linking and Embedding, Database)プロバイダを通してデータを取得する APIです。
ADOを使用するには参照設定(VBEの「ツール」)で Microsoft ActiveX Data Objects 6.1 Library にチェックを入れます。
バージョンによる違いはよくわかりません。とりあえず最新のにチェック入れておけばいいと思います。
サンプルコードでは企業コードから業種と市場をエクセルに出力してみます。
サンプルファイル名
・Accessファイル:「ListedCompany.accdb」もしくは「ListedCompany.mdb」
・Access内テーブル:「T_LC」
・出力先エクセルファイル:「sample52.xlsx」(オープン済)
※上場企業一覧のAccessファイルはこちらのCSVファイルを頂いて作成しました
ADOはActiveX Data Objectsの略でOLEDB(Object Linking and Embedding, Database)プロバイダを通してデータを取得する APIです。
ADOを使用するには参照設定(VBEの「ツール」)で Microsoft ActiveX Data Objects 6.1 Library にチェックを入れます。
バージョンによる違いはよくわかりません。とりあえず最新のにチェック入れておけばいいと思います。
サンプルコードでは企業コードから業種と市場をエクセルに出力してみます。
サンプルファイル名
・Accessファイル:「ListedCompany.accdb」もしくは「ListedCompany.mdb」
・Access内テーブル:「T_LC」
・出力先エクセルファイル:「sample52.xlsx」(オープン済)
テーブルイメージ
サンプルコード
Sub testAdo()
Dim i As Long
' ※注)参照設定
'出力先エクセルファイル
Dim ws As Worksheet
Set ws = Workbooks("sample52.xlsx").Worksheets(1)
'接続するAccessファイル名
Dim dbAcc As Variant
dbAcc = "D:\test\ListedCompany.accdb"
'旧ファイル形式
'dbAcc = "D:\test\ListedCompany.mdb"
'接続する
Dim dbConnect As New ADODB.Connection
dbConnect.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & dbAcc & ""
dbConnect.Open
'条件に合うレコードを取得する
Dim dbRecordset As New ADODB.Recordset
Dim dbTarget As ADODB.Fields
Dim strSQL As String
'===================
For i = 2 To 11
'企業コードでの条件検索
strSQL = "SELECT * FROM T_LC WHERE 企業コード = " & ws.Cells(i, 1) & ""
dbRecordset.Open strSQL, dbConnect, adOpenKeyset, adLockReadOnly
Set dbTarget = dbRecordset.Fields
ws.Cells(i, 2) = dbTarget("業種")
ws.Cells(i, 3) = dbTarget("市場")
'取得したレコードを閉じる
dbRecordset.Close
Next i
'接続を閉じる
dbConnect.Close
End Sub
結果イメージ
※上場企業一覧のAccessファイルはこちらのCSVファイルを頂いて作成しました


