検索

キーワード


目次

【Excel VBA】Accessのデータベースに接続して、テーブルを取得する方法

  • 公開日:2023-06-26 13:21:07
  • 最終更新日:2023-06-26 11:12:39

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。IMMRです。


Excel VBAで下記のようなAccessで作成したデータベースを参照する方法を説明します。


図1 DB作成場所

図1 DB作成場所


図2 DB内容

図2 DB内容


1.設定方法

VBAでAccessで作成したデータベースを参照するには、一か所だけ設定が必要になります。

手順は下記のとおりです。


1 Visual Basicをクリック

図3 設定1

図3 設定1


2 「ツール」の「詳細設定」をクリック

図4 設定2

図4 設定2



3 下記に示す「Microsoft Active Data Objects 6.1 Library」にチェックを入れてOKをクリックします。

図5 設定3

図5 設定3


2.Accessのデータベースに接続して、テーブルを取得する記載方法

まず、AccessのDBに接続するために


Connection」とRecordset」の宣言

接続するための「Connection」オブジェクトと

DBのレコードを取得するために「Recordset」オブジェクトの宣言を行います。


記載方法1

Dim Connectionのオブジェクト名 As New ADODB.Connection
Dim Recordsetのオブジェクト名 As New ADODB.Recordset



②「プロバイダー」と「DBが投稿されているバス」の設定

つぎにAccessのDBに接続と接続します。

DBと接続するのですが、

プロバイダーとDBが投稿されているパスが必要になります。

プロバイダーはAccessのバージョンによって異なります。


プロバイダー

 ・Access2007, 2010は、 Microsoft.ACE.OLEDB.12.0

 ・Access2000, 2002, 2003は、 Microsoft.Jet.OLEDB.4.0


そして、DBが投稿されているバスを記載します。

記載方法は下記のとおりです。


記載方法2

Connectionのオブジェクト名.Open _
    "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=DBが投稿されているバス;"


記載方法1宣言したConnection」オブジェクトを使用します。

そして、「プロバイダー」と「DBが投稿されているバス」を記載して、

DBとの接続を行います。

※ここでは、Access2007, 2010のプロバイダーを使用しています。


Connection」とRecordset」の設定

次にDBのテーブルを開くのでテーブル名の記載を行います。

記載方法1宣言したConnection」オブジェクトとRecordset」オブジェクトを使用します。

Recordset」に接続したDBのでテーブルを取得します。


記載方法3

Recordsetのオブジェクト名.Open "テーブル名", Connectionのオブジェクト名


Recordset」からの取得

今度は、記載方法3で取得したRecordsetのオブジェクト名つまり、取得したテーブルをセルにセットします。

ここではセル(A1)に取得テーブルを張り付けています。


記載方法4

Range("A1").CopyFromRecordset Data:=Recordsetのオブジェクト名


DBの切断

そして、取得が終わったらDBを切断します。


記載方法5

Connectionのオブジェクト名.Close


「Connection」の解放

そして最後に

接続するための「Connection」オブジェクトを解放します。


記載方法6

Set Connectionのオブジェクト名 = Nothing


いままでの流れがDBに接続して、テーブルを取得する流れです。

では、今まで説明してきた記載方法を結合したサンプルプログラムをみていきましょう。


3.Accessのデータベースに接続して、テーブルを取得する(サンプルプログラム)

では、図1 DB作成場所にあるにある

図2 DB内容 のテーブルを取得して、セル(A1)にコピーするサンプルプログラムです。


サンプルプログラム

Sub test1()

    Dim Con_DB As New ADODB.Connection
    Dim Rec_TBL As New ADODB.Recordset

    Con_DB.Open _
        "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=C:\access\DB_名簿.accdb;"

    Rec_TBL.Open "生徒名簿", Con_DB

    Range("A1").CopyFromRecordset Data:=Rec_TBL

    Con_DB.Close

    Set Con_DB = Nothing

End Sub


4.Accessのデータベースに接続して、テーブルを取得する(サンプルプログラム)の実行結果

実行結果は下記のようになります。


図6 実行結果

図6 実行結果


図2 DB内容のものと同じであることが確認できます。


図2 DB内容

図2



Accessのデータベースに接続して、テーブルを取得することができました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事