Home > 即効テクニック > AccessVBA > データベース・データ保護 > カレントデータベース以外のデータベースのオブジェクトを削除する

即効テクニック

データベース・データ保護

カレントデータベース以外のデータベースのオブジェクトを削除する

( - )
カレントデータベース以外のデータベースのテーブルやフォームを、「DeleteObject/オブジェクトの削除」 アクションを実行するDeleteObjectメソッドを使って削除します。
他のデータベースを操作するためには、ActiveXオブジェクトへの参照を作成して返すCreateObject関数を使います。ActiveX オブジェクトを作成するには、CreateObject関数の戻り値をオブジェクト変数に代入します。
サンプルプロシージャは、カレントデータベースからdb2.mdbのテーブル「テーブル1」を削除しています。
サンプルプロシージャの実行は、マクロなどを使って行います。

Function Sample()
    Dim objAcc As Access.Application
    
    Set objAcc = CreateObject("Access.Application")
    
    objAcc.OpenCurrentDatabase "C:\db2.mdb"
    
    objAcc.DoCmd.DeleteObject acTable, "テーブル1"
    
    objAcc.Quit
    
    Set objAcc = Nothing

End Function

CreateObject関数の構文は次のとおりです。

<構文>CreateObject(class,[servername])

指定項目   内容 
class    必ず指定します。内部処理形式が文字型(String)のバリアント型
       (Variant)の値を指定します。作成するオブジェクトのクラスと
       アプリケーションの名前を指定します。 
servername  省略可能です。内部処理形式が文字型(String)のバリアント型
       (Variant)の値を指定します。作成するオブジェクトを保存する
       ネットワークサーバの名前を指定します。ローカルマシンで使用
       する場合は、空の文字列 ("") を指定します。

OpenCurrentDatabaseメソッドは、既存のAccessデータベース(.mdb)をカレントデータベースとして開きます。
構文は次のとおりです。

<構文> application.OpenCurrentDatabase dbname[, exclusive]

引数     内容 
application  Applicationオブジェクトです。
dbname    パス名およびファイル名の拡張子を含む、既存のデータベース
       ファイルの名前を示す文字列式です。ネットワークパスを指定する
       場合は、そのネットワークでサポートされている書式を指定します。
         \\Server\Share\Folder\Filename
exclusive   データベースを排他モードで開くかどうかを指定するブール型
       (Boolean)です。この引数は省略可能です。既定値はFalseで、
       データベースは共有モードで開かれます。 

DeleteObjectメソッドの構文は、次のとおりです。

<構文> DoCmd.DeleteObject [objecttype][, objectname]

引数     内容 
 
objecttype  次のいずれかの組み込み定数を指定します。

acDataAccessPage
acDefault (既定値)
acDiagram
acForm
acMacro
acModule
acQuery
acReport
acServerView
acStoredProcdure
acTable 

objectname   引数objecttypeで選択した種類のオブジェクトの有効な名前を
        文字列式で指定します。 
        DeleteObject メソッドを含むVisual Basicのコードをライブラリ
        データベースで実行する場合は、この名前のオブジェクトが、
        最初にライブラリデータベースで、次にカレントデータベースで
        探索されます。 

引数objecttypeおよびobjectnameを指定しないと、objecttypeには定数acDefault(既定値)が使われ、データベースウィンドウで選択されたオブジェクトがコピーされます。
データベースウィンドウでオブジェクトを選択するには、"SelectObject/オブジェクトの選択" アクション、または引数In Database WindowにYes(True)を設定したSelectObjectメソッドを使うことができます。