VBA:ExcelからAccessのアクションクエリをSQLで実行し、セルにコピー後はデータを削除する

VBA

Excel VBAでAccessのアクションクエリをSQLで実行し、セルにコピー後はデータを削除する

前回は、AccessでアクションクエリにSQLを利用してデータを取得し、セルにコピー後は取得済フラグを取得済みをExcel VBA実行する方法を説明しました。

関連記事

Excel VBAでAccessのアクションクエリをSQLで実行し、セルにコピー後は取得済フラグを取得済みに設定する 前回は、AccessでアクションクエリにSQLを利用してExcel VBA実行する方法を説明しました。 [site[…]

しかし、上記の方法だと、データが増え続けるため、いつかはAccessファイルの容量上限に達してしまううかもしれません。

そこで、今回は、セルにコピーしたデータを削除して、データが増えないようにします。

VBAを実行する前に、「Microsoft ActiveX Data Objects 6.1 Libraly」または「Microsoft ActiveX Data Objects 2.X Libraly」を参照設定します。

参照設定については、以下で説明しています。

関連記事

事前バインディングと実行時バインディングの違い VBAのバインディングとは、外部のオブジェクトの機能をVBAで利用できるようにすることです。 バインディングは2通りの方法があり、実行時に利用できるようにする実行時バインディング(遅延[…]

ExcelのVBAで、AccessのアクションクエリをSQLで実行し、セルにコピーした後、SQLで削除する基本的なコードは以下のような感じになります。

ポイントは以下のとおりです。

  • 15行目でSELECTという命令に取得済フラグを利用してデータを取得するSQL文を作成する。
  • 17行目でSQLを実行することでデータを取得する。
  • 29行目でコピーしたデータは削除するSQL文を作成する。
  • 31行目でSQLを実行することでデータを削除する。

また、23~25行で、Accessのアクションクエリのフィールドをヘッダーとして追加しています。

SQLでデータを取得をする場合は、Accessのアクションクエリの設定はなし

ExcelからADO(Microsoft ActiveX Data Objects)を利用してSQLを実行する場合、Accessのクエリの抽出条件で設定するものはありません。

しかし、Accessは、データを削除してもデータのゴミが残り、ファイルのサイズが増え続けますので、定期的に最適化をする必要があります。

機会があれば、VBAでAccessを最適化する方法をやりたいと思います。

今回はDELETEを利用して実行する方法を説明しました。SQLに慣れると、SQLだけでデータを自由自在に扱えるようになりますので、SQLをどんどん使っていきましょう。

また、SQLはデータ分析や整形などにも活用できます。