VBA・SQL|AccessでDROP TABLE使ってテーブルを削除する方法

エクセルVBA VBAでSQL



VBAを使ったSQLで、Accessのテーブルを削除したいという質問がよくきます。

Accessのテーブルを削除するには

DROP TABLE

を使います。

今回はAccessのテーブルを削除するために

  • DROP TABLEの使い方
  • 一度に複数のテーブルを削除する記載方法
  • テーブルを削除する際のエラー回避方法

について徹底的にお伝えしていきますね☆



VBA・SQL|AccessでDROP TABLE使ってテーブルを削除する方法\]

VBAを使ってAccessのテーブルを削除するには、

DROP TABLE文を使用します。

DROP TABLE文の使い方

DROP TABLE文の構文は以下のとおりです。

▶DROP TABLEの構文

DROP TABLE テーブル名

簡単ですね☆

具体的には、例えばテーブル「販売実績」を削除する場合には、

DROP TABLE 販売実績;

と記述します。

DROP TABLEを使って一度に複数のテーブルを削除する記載方法

テーブルを1つだけ削除する方法は分かりましたが、2つ以上のテーブルの場合はどのように記述すれば良いのでしょうか?

2つ以上の複数テーブルを削除するためのDROP TABLEの構文は以下のようになります。

▶2つ以上のテーブルを削除するDROP TABLEの構文

DROP TABLE テーブル名1,テーブル名2,テーブル名3,・・・

つまり、テーブル名を「,」で区切って並べて記載していけば良いのです。

具体的には、

DROP TABLE 販売実績,価格,仕入れ値;

のように記述します。

DROP TABLEを使ってテーブルを削除する際のエラー回避方法

テーブルを削除する際に注意しなくてはならないことがあります。

それは、DROP TABLEの削除対象のテーブルが存在しないと、エラーになってしまうことです。

それを回避するためには、if文でテーブルの有無による処理の条件分岐を作成してもよいのですが、正直面倒くさいですよね・・・。

なので、わざわざ条件分岐処理を作らなくてもすむような簡単な方法として、On Error Resume Nextを使う方法をお伝えしますね☆

実際のOn Error Resume Nextを使ったテーブル削除のエラー回避サンプルコードは以下のとおりです。

【DROP TABLE のエラー回避サンプルコード】

Dim myConn As New ADODB.Connection
Dim sSql As String
On Error Resume Next ’エラーを無視して処理を継続する
sSql = "DROP TABLE 販売実績,価格,仕入れ値;"
myConn.Execute sSql
myConn.Close: Set myConn = Nothing
On Error GoTo 0 ’エラー無視を解除

On Error Resume Next を使うことによって、もし削除対象のテーブルがなくてもエラーになって処理が停止することがなくなります。

if文の条件分岐処理を作成するよりもずっと簡単にできるのでオススメです。

まとめ

今回はVBAを使ったSQLで、Accessのテーブルを削除する方法についてお伝えしました。

Accessのテーブルを削除するには

DROP TABLE テーブル名

のように記述します。

また、2つ以上の複数のテーブルを削除する場合の記述方法は、

DROP TABLE テーブル名1,テーブル名2,テーブル名3,・・・

のようにテーブル名を「,」で区切って記述します。

削除対象のテーブルが存在しない場合のエラー回避方法は、

On Error Resume Next

を使えば削除対象テーブルが存在しない場合でも処理が停止しません。

ちなみに、DROP TABLEを使ってテーブルを削除する場合は削除してよいか質問するポップアップが表示されませんので、間違って消さなくてよいテーブルを削除しないように気を付けてください。

AccessをVBAを使ってテーブルを削除する機会はあまりないかもしれませんが、知っていて損にはなりませんので、ぜひ参考になればと思います☆




VBAでSQL
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

タイトルとURLをコピーしました