VBA:ExcelからAccessのアクションクエリをSQLで実行し、セルにコピー後は取得済フラグを取得済みに設定する

VBA

Excel VBAでAccessのアクションクエリをSQLで実行し、セルにコピー後は取得済フラグを取得済みに設定する

前回は、AccessでアクションクエリにSQLを利用してExcel VBA実行する方法を説明しました。

関連記事

Excel VBAでAccessのアクションクエリをSQLで実行し、セルにコピーする 前回は、AccessでアクションクエリにFilterを利用してExcel VBA実行する方法を説明しました。 [sitecard subtitle[…]

今回は、さらに取得済フラグを設定することで、取得済みのデータは2度と取得しないようにします。

2度と取得しない設定にするためには、Accessのフィールド名に取得済フラグを追加し、データを取得したあとSQLのUPDATE(更新)命令を使って取得済フラグで取得済みに設定します。

その後、再びデータを取得する際に、取得済フラグを確認し、未取得であればデータを取得します。

以上の流れを作成してみます。

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

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

関連記事

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

ExcelのVBAで、AccessのアクションクエリをSQLで実行し、セルにコピーした後、コピー済フラグにコピー済として1と設定する基本的なコードは以下のような感じになります。

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

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

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

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

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

今回はUPDATEを利用して実行する方法を説明しました。SQLはとても便利ですので、SQLをどんどん使っていきましょう。

次回は、データを取得したら、AccessからDELETEを利用して取得したデータを削除する方法を説明します。