●概要●
テーブルやクエリーまたはレコードセットなどのさまざまなオブジェクトのコピーを"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社員」が作成されていることを確認してください。
●補足●
上記の処理はマクロのアクション「オブジェクトのコピー」を使用しても可能です。