【VBA】ExcelからADOでAccessのデータを削除する

VBA

ExcelからADOでAccessのデータを削除してみます。

今回はデータの物理削除ではなく
Yes/No型を利用した論理削除になります。

 

Accessファイルの概要

Accessファイルは以下のパスに置かれています。
C:\access-delete-test\MenuData.accdb

Accessにはテーブル「T_メニュー」があります。
T_メニューにはメニューデータが記録されています。

 

テーブルは以下のフィールドで構成されています。

フィールド名 データ型
ID オートナンバー型
メニュー名 短いテキスト
値段 数値型
データ新規登録者 短いテキスト
データ新規登録日 日付/時刻型
データ更新者 短いテキスト
データ更新日 日付/時刻型
削除フラグ Yes/No型  書式はTrue/False

削除フラグがTrueになっているものを、削除データとみなします。

 

削除フォーム

今回はIDが7のピザをCさんが削除するとしてみます。

データベースからメニューを削除したいので
データ削除用のフォームをシートに用意します。
シート名はDeleteDataとします。

 

削除したいメニューのIDとデータ削除者の名前を入力します。

A3セルに削除したいメニューのIDを入力します。
B3セルにデータ削除者を入力します。

削除ボタンを押すとデータを削除します。

データ削除のVBAコード

参照設定

ExcelからADOを利用してAccessのデータを更新するには
参照設定を行う必要があります。
参照設定の方法は以下をご覧ください

VBAで参照設定を行う
VBAに標準で含まれていない機能があるときは 外部のライブラリを参照して、外部ライブラリ内の機能を利用します。 この外部ライブラリの機能を利用する設定を、参照設定と言います。

 

参照設定を起動してMicrosoft ActiveX Data Objects 6.1 Libraryに
チェックを入れます。

 

データを削除するコードは以下になります。

データの削除テスト

削除ボタンを押した時にdeleteMenuプロシージャを呼び出すように設定します。

 

削除ボタンをクリックすると入力したデータを削除するかどうか
メッセージボックスが表示されます。
「はい」をクリックするとデータ削除を実行します。

 

削除が完了するとメッセージボックスが表示されます。

 

Accessのデータを見るとT_メニューのピザの削除フラグがTrueになっており
削除データとなっています。

コメント