[VBA]AccessからExcelにデータをインポートする方法 (ADO編)

上記のように書くと、「それってAccessのエクスポート機能を使えばいいじゃん」と思われるかもしれません。
たしかにAccessを開いて、テーブルやクエリをエクセル形式でエクスポートするやり方もあります。

しかし、Excelファイルを開いた上で、そこからAccessのデータを取りに行くというのが必要なときもあります。
Excel VBAからAccessのデータを呼び出す方法、と言った方がわかりやすいかもしれません。
ADO(ActiveX Data Object)という仕組みを使うと、これを実現できます。

ADOを使う準備

ExcelのVBE(Visual Basic Editor)の画面で、ADOの参照設定をします。

vbe-1.JPG
vbe-2.JPG

Excel VBAコードを書く

下記のようにマクロを書きます。


Sub get_data()
    
    Dim myPath As String
    Dim myProvider As String
    Dim mySrc As String
    
    myPath = "C:\~\サンプル.mdb"
    myProvider = "Provider=Microsoft.Jet.OLEDB.4.0;"
    mySrc = "Data Source=" & myPath & ";"
    
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    cn.Open myProvider & mySrc
    rs.Open "テーブル名またはクエリ名", cn
    
    Range("a1").CopyFromRecordset rs
     
End Sub

マクロを実行すると、Excel上にAccessのデータが展開されます。

ado-test.JPG

ADOとは何か?

ADOというものが一体何なのか、最初はよくわからないと思います。
そいういう場合は、無理に理解する必要はなく、上記のようにやるとVBAからAccessのデータをいじれるとだけ覚えておけばよいと思います。

感覚的には、FSO( File System Object )と似ているかもしれません。
FSOを使うと、VBAからPC上のフォルダやファイルを操作することができます。
同じように、ADOを使うと、VBAからデータベース上のデータを操作することができます。
カテゴリ: