メインコンテンツへスキップ
【VBA】ExcelからADOでAccessのデータを削除する

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

·3 分
Programming VBA
かずさプログラマー
著者
かずさプログラマー
業務の作業自動化を行っています。Go、VBA、Pythonを主に使用しています。過去にはC#、VB.Net、JavaScriptも使用していました。
目次

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で参照設定を行う
·1 分
Programming VBA

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

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

Option Explicit
Sub deleteMenu()
  
  Dim returnVal As Long
  returnVal = MsgBox("メニューを削除しますか?", vbYesNo + vbQuestion, "確認")
  If returnVal = vbNo Then Exit Sub

  Dim deleteSht As Worksheet
  Set deleteSht = ThisWorkbook.Worksheets("DeleteData")
  
  Dim adoCON As New ADODB.Connection
  adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" & _
                  "Data Source=" & "C:\access-delete-test\MenuData.accdb" & ";"
  adoCON.Open
  
  Dim id As Long
  Dim personName As String
  
  id = deleteSht.Range("A3")
  personName = deleteSht.Range("B3")
  
  Dim adoRS  As New ADODB.Recordset
  adoRS.Open "SELECT * FROM T_メニュー WHERE ID = " & id, adoCON, adOpenDynamic, adLockPessimistic
  adoRS!データ更新者 = personName
  adoRS!データ更新日 = Now()
  adoRS!削除フラグ = True
  adoRS.Update

  adoRS.Close
  adoCON.Close
  
  Set deleteSht = Nothing
  Set adoCON = Nothing
  Set adoRS = Nothing
  
  MsgBox "メニューを削除しました", vbInformation, "削除完了"
  
End Sub

データの削除テスト
#

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

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

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

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

関連記事

【VBA】ExcelからADOでAccessにデータを登録する
·2 分
Programming VBA
【VBA】ExcelからADOでAccessのデータを更新する
·2 分
Programming VBA
ExcelからADOでAccessのデータを読み込む
·2 分
Programming VBA