【Win98/Access97】
お世話になります。
早速質問ですが、AccessのファイルがFileA,FileB,FileCと3つあるとして、
FileC上から実行をかけると、FileBの全てのオブジェクトがFileAへエクスポ
ートされるようなしかけを作ることはできるでしょうか?
マクロを作成してデータベース変換やオブジェクトのコピーなどを試してみましたが、
いずれもテーブルやフォームは問題ないものの、レポートが「無効な参照」と出てしまってエクスポートできません。
取りこみたいファイルにマクロを作ってインポートする方法はできないことも
ありませんが、オブジェクトを手で消されたりすると困るので、できるだけ
ユーザーに中を触らせたくありません。
よい方法がありましたら教えて下さい。

A 回答 (2件)

>ということは、FileBに直接自身のオブジェクトをFileAに掃き出す処理を入れてもできるということですよね。



データベース変換コマンドは、
「現在開いているDBに、別のDBのオブジェクトを取り込む」(インポート)と、
「現在開いているDBのオブジェクトを別のDBに書き出す」(エクスポート)の二つに機能しか含まれないみたいです。

「別のDBのオブジェクトを別のDBにコピーする」処理を行うためには、#1のマクロでの処理のように、一度ワンクッションを入れてから処理を行うしかないみたいです。

#1のVBAでの処理では、
1:Accessをもう一つ('FileB'という名前で)起動する
2:'FileB'上で、FileB.MDBを開く
3:'FileB'に対して「テーブル『T1』をFileC.MDBにエクスポートせよ」という命令を発する

ってな感じで、中間オブジェクトを経由することなくオブジェクトのコピー処理を実現しているわけです。
「マクロでやるとすれば」とは処理的に異なることを書いてしまっていたので、少し混乱させてしまったかもしれません。

>データベース変換でレポートもエクスポートできますか?
できますよん。
マクロでするなら、「オブジェクトの種類」の欄を「レポート」にすればいいです。

VBAの場合ですと、
FileB.DoCmd.TransferDatabase acExport, "Microsoft Access", "X:\XXX\FileA.MDB", acReport, "Report1", "Report1"
みたいな感じにすればいいです。
    • good
    • 0
この回答へのお礼

細かいアドバイスありがとうございました。
試しにVBAでちょっとやってみます。

お礼日時:2001/05/07 08:44

えっと、もしマクロでやるとすれば、


1:FileB.MDBのオブジェクトをFileC.MDBにインポート
2:インポートしたオブジェクトをFileA.MDBにエクスポート
3:FileC.MDB上のオブジェクトを削除する
という手順で出来ると思います。

VBAでするなら、
Private Sub コマンド0_Click()
 Dim FileB As New Access.Application
 FileB.OpenCurrentDatabase "X:\AAA\FileB.MDB"
 FileB.DoCmd.TransferDatabase acExport, "Microsoft Access", "X:\AAA\File1.MDB", acTable, "T1"
 FileB.CloseCurrentDatabase
 FileB.Quit
End Sub
のような感じで実現できます。

この回答への補足

早速のご回答ありがとうございます。
一度FileCに必要なオブジェクトを取りこんでからFileAに掃き出すわけですね。
ということは、FileBに直接自身のオブジェクトをFileAに掃き出す処理を入れてもできるということですよね。
TransferDatabaseコマンドを使っていると言う事は、オブジェクトのコピーではなく、データベース変換を使っていると言う事ですね。
データベース変換でレポートもエクスポートできますか?私がやった時は質問のようなエラーが表示されてダメだったのですが。

補足日時:2001/04/27 09:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報