• ベストアンサー

「もしテーブルが存在するなら削除する」

「もしテーブルが存在するなら削除する」ってどうやればいいでしょう? DoCmd.DeleteObject acTable, "Table1" これでテーブルの削除は出来るのですが Table1が存在しない場合はエラーになります。 なのでこのコードを実行する前にテーブルの存在を確認したいのですが どうやってifで条件分岐すればよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

コード表のツールから参照設定で Microsoft DAO xx Object Library にチェックを入れ、(xxは3.6のような数字) 以下のように、 Sub test() Dim db As DAO.Database Dim tdf As TableDef Set db = CurrentDb For Each tdf In db.TableDefs If tdf.Name = "Table1" Then DoCmd.DeleteObject acTable, tdf.Name End If Next Ed Sub testの中身をボタンのクリックイベントなどに 入れて実行します。

ngiajeqgi4
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

エラーを無視するようにするのも、手っ取り早い方法としてアリです。  On Error Resume Next  DoCmd.DeleteObject acTable, "Table1"  Err.Clear  On Error GoTo 0

ngiajeqgi4
質問者

お礼

ありがとうございます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 No1以外の方法として、 Sub test() Dim obj As AccessObject Dim db As Object Set db = Application.CurrentData For Each obj In db.AllTables If obj.Name = "Table1" Then DoCmd.DeleteObject acTable, obj.Name End If Next obj Set db = Nothing End Sub のような方法もあります。この場合は特にDAOに チェックを入れる必要はありません。

ngiajeqgi4
質問者

お礼

ありがとうございます。

関連するQ&A