きなこSHOW

どうやったら寝たまま仕事ができるかあれこれ考える。

Accessクエリの結果セットを配列で返すサンプルVBAを紹介します

Accessでクエリの結果をExcelシートに出力する場合、
クエリの結果が配列に格納してあると、シートに貼り付けるのはとても簡単です。
↓Variant型変数vArrayに配列形式で値が格納されている場合の例

Range("A5:G500") = vArray

みたいに、配列はExcelと相性が良いのです。上の例はちょっと乱暴ですけどね。
では、Access側でクエリの結果を配列に格納するにはどうするか?
コピーしてそのまま使えるサンプルを紹介します。

Access VBA】クエリの結果セットを配列に格納して返すサンプル

下準備としてDAOに参照設定

私の好みでDAOを使用していますので、参照設定で、
Microsoft DAO 3.6 Object Library」
または
Microsoft Office XX.X Access Database Engine Object Library」
のいずれかにチェックを付けてください。
ADOが好きな人は参照設定と以下のコードを適宜書き換えてくださいね。(←知らない)

サンプルコード

以下のコードをAccessの標準モジュールに貼り付けてください。
「gbGetData」も「mbSetArray」も1本のモジュールに含めます。

呼び出し例

第1引数にはクエリ名を、第2は返却用で、自分で定義したVariant型の変数をセットして呼び出してください。
第3引数:(省略可能)第1で指定したクエリの列数を指定します。
第4引数:(省略可能)第1のクエリがパラメータクエリの場合、パラメータ名を指定します。
第5引数:(省略可能)第1のクエリのパラメータにセットする値を指定します。

指定できるクエリは選択クエリです。選択クエリならパラメータはギリ行けます。
アクションクエリはちょっと無理なのでご容赦ください。

Excelの新規Worksheetの作成は、こちらの記事で紹介しています。
ご参考までに。

kinaccco.hatenadiary.com

 

免責と最後の締め

サンプルコードの使用はくれぐれも自己責任でお願いいたしますね。
どこかでお役に立てれば幸いです。