他MDB内にあるテーブルを削除する
  カレントDB以外のMDBからテーブルを削除する方法を説明します。

● 準備 ●

(1) 新規標準モジュールを用意し、以下のプロシージャを記述します。
(2) [テーブル1]テーブルを作成します。
    後ほど削除するものですので、中身は何でも結構です。


● サンプル ●

'【引数説明】
'DbName     :データベース名のフルパス
'tblName    :削除したいテーブル名

Public Function DeleteTable(Optional DbName As String = "", _
                            Optional tblName As String = "")

    'エラートラップ
    On Error GoTo DeleteTable_Err:

    '変数宣言
    Dim DB     As DAO.Database  '接続先データベース
    Dim Tbl    As DAO.TableDef  'テーブルオブジェクト
    Dim strSQL As String        'SQL文用文字列

    'データベース接続
    If DbName = "" Then
        'データベース名が空白の場合はCurrentDbを指定
        Set DB = CurrentDb
    Else
        '指定MDBを開く
        Set DB = OpenDatabase(DbName)
    End If

    'テーブル削除
    If tblName = "" Then
        'テーブル名が空白の場合は全削除
        For Each Tbl In DB.TableDefs
            'システムテーブルの除外
            If Left(Tbl.Name, 4) <> "MSys" Then
                strSQL = "Drop Table " & Tbl.Name & ";"
                DB.Execute strSQL
            End If
        Next
    Else
        '指定テーブルを削除
        strSQL = "Drop Table " & tblName & ";"
        DB.Execute strSQL
    End If


    '終了処理
    DB.Close

Resume_Point:
    Set Tbl = Nothing
    Set DB = Nothing
    Exit Function

DeleteTable_Err:
    MsgBox Err.Number & vbCrLf & Err.Description
    GoTo Resume_Point:
End Function

'実行プロシージャ
Private Sub DeleteTest()
    Call DeleteTable(, "テーブル1")
End Sub


● 動作確認 ●

  サンプルプロシージャDeleteTestを実行して下さい。サンプルでは第1引数を
省略していますので、カレントDB内のテーブルを削除します。
  実行後[テーブル1]テーブルが無くなっている事を確認して下さい。


● 詳細 ●

  サンプルではDAO.DatabaseオブジェクトのExecuteメソッドを使用して削除ク
エリを実行しています。
  テーブルを削除するには、他にもTableDefオブジェクトを使用する方法、
DoCmdオブジェクトのRunSQLメソッドを使用する方法等がありますが、前者は処
理が冗長になる点が、後者はカレントDB以外のMDBのテーブルを削除できないた
め、Executeメソッドを使用しています。

  サンプル内では、システムテーブルの判断にあたり単純にテーブル名を取得
して判断していますが、隠しテーブルの削除を抑制するなど、処理を厳密に行
うためにはAttributesプロパティにて判断する必要があるでしょう。


■■ 注意 ■■

  ※ このサンプルはテーブルを削除します ※
  くれぐれも必要なデータを削除することの無いように、バックアップを
取ってからテストするなど、十分に注意して下さい。


● 補足説明 ●

  Access2000の場合、デフォルトではDAOに参照設定されていません。
  Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、
Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。
  その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOの
チェックを持ってきて下さい。

Access97/2000



戻る


Excel Word Access VBA! モーグ