【EXCEL:VBA】ACCESSからクエリを指定してデータを取得したい

ACCESSからクエリを指定してデータを取得したい

この記事では、指定したACCESSファイルからクエリを指定してデータを取得する方法について説明しています。

 

ACCESSファイルを開いて、クエリを指定して、データを取得し、EXCELファイルにコピーするのは大変な作業です。

 

今回ご紹介する機能を利用すれば、ACCESSファイルを開かずに欲しいデータを一瞬で取得することができます。

 

EXCELシート上に取得したデータが残るため、表に加工したり、ピポットテーブルの元データにしたり、2次加工も思いのままにできるようになります。

 

 

それでは、指定したACCESSからクエリを指定してデータを取得する機能を作成していきましょう。

 

困っている女性

ACCESSに入っている各種データを作業でよく利用することがあるの。

困っている女性

ACCESSファイルをいちいち開いて、条件を指定してデータを絞ってデータを表示させ、そのデータをコピーして、EXCELに貼り付ける作業が地味に面倒なの。

困っている女性

EXCELから条件をしてすれば、直接データを取得できると便利なんだけどなあ。
それなら、VBAを使えばボタン1つ押すだけで、ACCESSから欲しいデータをEXCELに取得することができるよ。

解決する男性

しかも、取得したデータはEXCEL上に残るので好きなように加工もEXCELできるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

「機能概要図」(ACCESSからクエリを指定してデータを取得する)

今回作成する機能の概要図は、以下です。

「機能概要図」(ACCESSからクエリを指定してデータを取得する)

「機能概要図」(ACCESSからクエリを指定してデータを取得する)

 

指定したACCESSファイルから、クエリを指定してデータを取得する機能を、1つ1つ順番に説明していきます。

ACCESSファイルパス指定欄、クエリ指定欄、取得したデータの表示欄を準備する

まず、ACCESSファイルとクエリを指定する欄を作成します。

そのあと、指定したクエリデータを表示するシートを作成します。

 

「メイン」シートを作成する

メインシートを作成する

メインシートを作成する

 

  1. 「メイン」という名前のシートを作成します。
  2. A1セルに「ACCESSファイルパス」のタイトル欄を作成します。
  3. A2セルに「クエリ」のタイトル欄を作成します。
  4. B1とB2セルに、「ACCESSファイルパス」と「クエリ」を指定する欄を作成します。

 

B2セルは、クエリを入力するので少し高さと幅を持たせましょう。

 

「データ」シートを作成する

データ表示するシートを作成する

データ表示するシートを作成する

  1. 「データ」という名前のシートを作成します。
  2. あとは、特になにもしなくてよいです。

 

1行目には、取得したクエリデータの項目名が表示されます。

2行目以降には、クエリデータが表示されます。

 

VBAでACCESSからクエリを指定してデータを取得する機能を作成する

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

VBAプログラムを入力する

VBAプログラムを入力する

 

標準モジュールを追加して、以下のソースを書きます。

 

次に、EXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

ACCESSからクエリを指定してデータを取得する機能の使い方

それでは、ACCESSからクエリを指定してデータを取得する方法を説明します。

 

まず、B1セルにACCESSファイルのパスを入力します。

ACCESSファイルパスを入力する

ACCESSファイルパスを入力する

 

次に、B2セルにクエリを入力します。

クエリを入力する

クエリを入力する

注意点としては、FROMの前やWHEREの前に空白を入力して、前の項目とくっつかないように入力しましょう。

例えば、「金額」と「FROM」がくっつくと無効なクエリとなります。

 

また、便利な使い方としては、メインシートの「A1・A2・B1・B2」以外は、

VBAプログラムでは利用していないので、よく使うクエリを入力して保存しておきましょう。

そうすれば、使いたいクエリをコピーして、B2セルに貼り付けるだけで、クエリを切り替えることができます。

 

または、B2セルに「=C2」と入力すれば、C2セルに入力されているクエリを利用できます。

 

 

次に、「開発」タブの「マクロ」をクリックします。

テーブル名とクエリ名を取得するVBAプログラムを実行する

テーブル名とクエリ名を取得するVBAプログラムを実行する

 

 

先程作成したVBAプログラム「GetData」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックしてデータを取得します。

実行ボタンをクリックする

実行ボタンをクリックする

 

しばらく待つと、指定したACCESSファイルから指定したクエリデータが「データ」シートに表示されます。

1行目には指定したクエリの各項目名が表示され、2行目以降には取得したデータが表示されます。

ACCESSからデータを取得した

ACCESSからデータを取得した

 

実際のACCESSは、以下のようになっています。

実際のACCESSの様子

実際のACCESSの様子

 

売上明細テーブルから、日付=20220602のデータのみ取得できています。

クエリの条件を変更すれば、違ったデータも簡単に取得できます。

 

例えば、以下は担当者、商品名毎の合計金額を取得するクエリに変更して実行しています。

クエリを変更して実行

クエリを変更して実行

 

きちんと、データが取得できています。

クエリを変更して実行した結果

クエリを変更して実行した結果

 

ACCESSからクエリを指定してデータを取得するVBAプログラム(GetData)の説明

それでは、ACCESSからクエリを指定してデータを取得するVBAプログラム(GetData)を説明します。

①メインシートを変数に格納する

ここでは、このあとの処理で何度も使う「メイン」シートを変数に格納しています。

 

②データシートを変数に格納する

ここでは、このあとの処理で何度も使う「データ」シートを変数に格納しています。

 

③データシートをクリアする

ここでは、クエリデータを取得する前に、データシートに入力されているデータをクリアしています。

前回実行して取得したデータを、事前にクリアするためです。

 

④ADODBコネクションオブジェクトを生成する

ここでは、ACCESSに接続するオブジェクトを生成しています。

このオブジェクトを利用して、ACCESSからクエリデータ取得することができます。

 

⑤指定されているACCESSに接続する

ここでは、メインシートのB1セルに入力されているACCESSに接続しています。

 

⑥指定されているクエリでACCESSからデータを取得する

ここでは、メインシートのB2セルに入力されているクエリを利用してACCESSからデータを取得しています。

 

⑦取得したデータのフィールド名をデータシートにセットする

ここでは、取得したデータの項目名をデータシートの1行目に出力しています。

 

⑧取得したデータをデータシートに貼り付けする

ここでは、取得したデータをデータシートの2行目に貼り付けています。

 

⑨使用したオブジェクトを閉じる

ここでは、使用して使い終わったオブジェクトを閉じています。

 

⑩使用したオブジェクトをメモリから開放する

ここでは、使い終わったオブジェクトをメモリから解放しています。

 

 

ということで、ACCESSからクエリを指定してデータを取得できるようになりました。

 

それでは、ACCESSから欲しいデータを取得するツールを作って、作業を効率化しましょう。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です