- ベストアンサー
Accessファイルのオブジェクトを一括エクスポートする方法
- Accessのファイルが複数ある場合、特定のファイルから他のファイルへオブジェクトをエクスポートする方法について質問です。
- 既存のマクロやデータベース変換を使用してオブジェクトをコピーすることは試しましたが、レポートのエクスポートに問題が発生しています。
- マクロを使用してファイルをインポートする方法も検討しましたが、ユーザーがオブジェクトを変更した場合に問題が発生する可能性があります。解決策を教えてください。
- みんなの回答 (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" みたいな感じにすればいいです。
その他の回答 (1)
- ARC
- ベストアンサー率46% (643/1383)
えっと、もしマクロでやるとすれば、 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コマンドを使っていると言う事は、オブジェクトのコピーではなく、データベース変換を使っていると言う事ですね。 データベース変換でレポートもエクスポートできますか?私がやった時は質問のようなエラーが表示されてダメだったのですが。
お礼
細かいアドバイスありがとうございました。 試しにVBAでちょっとやってみます。