Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5469 / 9994 ←次へ | 前へ→

【7745】Re:テーブルの削除
回答  小僧  - 06/4/22(土) 1:33 -

引用なし
パスワード
   ▼ヤマ さん、たん さん:
こんばんは。

>>無理やりやろうとするなら、MSys関係の隠しテーブルを参照し、
>>ワイルドカードで抽出条件を指定し、該当したテーブル名を個々に
>>呼び出して、DeleteObjectするというルーチンを組めば
>>可能と思われます。

「テーブル」で始まる Table を列挙する例です。

Sub ワイルドカードを使用したテーブル名の抽出1()
'要参照設定 Microsoft DAO x.x Object Library
Dim strSQL As String
Dim rs As DAO.Recordset
  strSQL = "SELECT Name From MSysObjects " _
      & "Where Name Like 'テーブル*' AND Type = 1"

  Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
    
    Do Until rs.EOF
      Debug.Print rs![Name]
      rs.MoveNext
    Loop
  rs.Close
  Set rs = Nothing
End Sub


Tabledef オブジェクトを使う方法もあります。


Sub ワイルドカードを使用したテーブル名の抽出2()
'要参照設定 Microsoft DAO x.x Object Library
Dim TName As String
Dim db As DAO.Database
Dim i As Long

  Set db = CurrentDb
  
  For i = db.TableDefs.Count - 1 To 0 Step -1
    If db.TableDefs(i).Name Like "テーブル*" Then
      Debug.Print db.TableDefs(i).Name
    End If
  Next

  Set db = Nothing
End Sub


あとはヤマさんの環境に応じてコード改変してみて下さい。

921 hits

【7738】テーブルの削除 ヤマ 06/4/21(金) 14:22 質問
【7739】Re:テーブルの削除 たん 06/4/21(金) 16:00 回答
【7740】Re:テーブルの削除 たん 06/4/21(金) 16:32 回答
【7741】Re:テーブルの削除 ヤマ 06/4/21(金) 17:15 お礼
【7745】Re:テーブルの削除 小僧 06/4/22(土) 1:33 回答
【7753】Re:テーブルの削除 ヤマ 06/4/24(月) 12:00 お礼

5469 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078229
(SS)C-BOARD v3.8 is Free