即効テクニック

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

オブジェクトのコピー

(Access 97)
●概要●
テーブルやクエリまたはレコードセットなどのさまざまなオブジェクトのコピーを"CopyObject/オブジェクトのコピー" アクションを用いて行います。この アクションはDoCmdオブジェクトのCopyObjectメソッドで行います。このCopyObjectメソッドの引数にコピー先のデータベースやコピーしたいオブジェクトを指定することで可能となります。
用途としては同じような構造を持つテーブルやクエリをすばやく作りたいときや、バックアップなどに使えます。

書式は以下のようになり、

DoCmd.CopyObject [destinationdatabase][, newname][, sourceobjecttype, sourceobjectname]

第1引数のdestinationdatabaseにコピー先のデータベースのパスを指定します。同じデータベース内でコピーを行う時は省略できます。また、第3引数のsourceobjecttypeにはコピー対象のオブジェクトの種類を指定します。

指定可能なオブジェクトは以下のとおりです。
acDefault (既定値)
acForm
acMacro
acModule
acQuery
acReport
acTable

サンプルコードではDドライブにある「Northwind.mdb」の「社員」テーブルを同じデータベース内にコピーしています。

●サンプルコード●
Private Sub CopyObject()
    Dim objAccess As Access.Application
    Set objAccess = New Access.Application
    ' データベースを指定
    objAccess.OpenCurrentDatabase "d:\Northwind.mdb"
    ' テーブルを複製
    objAccess.DoCmd.CopyObject , "new社員", acTable, "社員"
    ' オブジェクトを閉じる
    objAccess.CloseCurrentDatabase
    objAccess.Quit
    Set objAccess = Nothing
End Sub

●動作確認●
テーブルに「new社員」が作成されていることを確認してください。

●補足●
上記の処理はマクロのアクション「オブジェクトのコピー」を使用しても可能です。