ExcelでSQLを使う-001: DELETE文の実行 ー SQLのDELETE文 を実行する
我が家の黒ラブの出産が一週間後に迫っている。ブログ「エクセルを参照・変更・削除するツール」を急いで書き上げなければならない。
◇◇◇◇◇
SQL文を発行すれば、エクセルシートへのデータの追加、編集、削除が簡単にできる。
DELETE FROM [Sheet2$B1:L10000]
WHERE 文字列='XXXX'
AND Format(日付, 'yyyy/mm/dd' )='2019/02/19'")
これは、《[Sheet2]のRange("B1")~Range("L10000")を範囲とする表から、列<文字列>の値が’XXXX'のを削除せよ!》というSQLのDELETE文。が、その削除にあたっては、<日付>が2019/02/19に合致するそれに限定されている。
WHERE節は、条件節とも呼ばれている。同節には、このように実に多彩な条件を書くことができる。そして、それは、次のように簡単に実行できる。
[イミディエイトウインドウ]
? SQLExecute("DELETE FROM [Sheet2$A1:L10000]
WHERE 文字列='XXXX'
AND FormatDateTime(日付)=#2019/02/19#")
True
なお、[イミディエイトウインドウ]でのテストが成功していることは、以下のようなマクロを編集して実行できるということを意味している。
Sub Test()
Call SQLExecute(SQL文)
End Sub
エクセルの表に対して挿入、更新、削除する文は、3つある。DELETE文は、その一つ。そして、この3つの命令文を実行する関数ツールが、SQLExecute関数である。
? SQLExecute(SQL文、”D:\Book2.Xlsx")
SQLExecute()の対象は、開いているブックだけではない。上記のように外部ブックや開いている他のブックも対象とする。ここら辺りは、エクセルの機能の限界を突破したそれである。SQLExecute()ユーザーは、その能力を手にすることが出来る。
次回は、SQLExecute()でUPDATE文を使う方法について紹介する。
(告)SQLExecute関数で削除できるのは、式を含まない列のみです。
ですが、今、式を含む列の有無に関わらず自在にSQLのDELETE文を発行すれば、WHERE節に該当する行を削除するバージョンを書いています。