次の方法で共有

Access2007ではDocmd.CopyObjectは利用不可?

Anonymous
2010-08-25T08:23:52+00:00

WindowsXP上でAccess2007を利用しております。

 次のようなコードを実行すると、Docmd.CopyObjectのところでエラー(実行時エラー '3000; システムで予約されているエラー(-1524)云々)となります。

    Set Wsp = DBEngine.Workspaces(0)

    Set Dbs = Wsp.OpenDatabase(Dbsn, False, False, strPsWd)

    'Dbs.TableDefs.Delete "テーブル名1"

    DoCmd.CopyObject Dbsn, "テーブル名1", acTable, "テーブル名1"

  Dbsn:出力先データベース(フルパスでファイル名まで指定)

  strPsWd:出力先データベースのパスワード

 これまで2002上で上記コードを走らせており、何も問題が生じていなかったのですが、2007上で走らせるとエラーとなります。

 現在は、2007への移行にあたり、動作を検証している段階で、私のPCには2002も入っております。もしかすると、2002、2007の混在環境がエラーと何らかの関係があるのでしょうか?

 以上、何かご存知の方がおられましたら、ご教示の程をお願い申し上げます。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-08-27T05:46:36+00:00

石田さん、ご教示ありがとうございます。

 私のところでは、Access2007だけの環境で試すことはできませんので、2002との共存環境で何とかするしかない状況です。

 それで、

 ・どのオブジェクト(テーブル、クエリ、フォーム、レポート等)をDocmd.CopyObjectしても同じ現象になるか

 について、試してみました。

 その結果、コマンドボタンを配してコードを走らせているフォームと、Docmd.CopyObjectの対象になっているテーブル1以外は出力できることが分かりました(コードを走らせているフォームは閉じてからでないとDocmd.CopyObjectの対象にならないと思ったため、テストの対象とはしていません)。

 そこで、テーブル1に何らかの原因があるらしいと考え、エラーとならなかったテーブルとの違いを考えてみました。

 他のテーブルはフィールド数が5程度でレコードも最大で500件、テーブル1は160フィールド×5000件超ですが、大きさは関係なさそうでした。

 この他に、テーブル1にだけオートナンバー型のフィールドがありました。

 この番号が飛び飛びになっていましたので、これが原因かもと考え、テーブル1の構造だけコピーしたNewテーブル1を作成し、標準モジュールに書いたコードでオートナンバー型のフィールド以外のテーブル1のデータをNewテーブル1に全て書き写した後、テーブル1を削除し、Newテーブル1の名前をテーブル1としてDocmd.CopyObjectをテストしましたら、今度はエラーとならず、正常に出力先にコピーできました。

 オートナンバー型のフィールドのデータが飛び飛びとなっているだけで結果に差が出る原因は不明ですが、ともかく当初目指していたことができるようになったため、これにて解決といたします。

 ありがとうございました。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-08-26T05:28:46+00:00

    Lagarさん、こんにちは

    Access2007のDocmd.CopyObjectでエラーがでるという事ですね。

    こちらでもAccess2007(Access2002の共存なし)の端末にて試してみたのですが、Lagarさんが投稿されたようなエラーはでませんでした。

    Lagar さんのほうでも、可能であれば、Access2007だけの環境で試してみてください。 

    Access2007だけの環境でも発生する場合は、以下のような確認を行うと、問題の切り分けにもなって、みなさんからのアドバイスも集まりやすくなるかなと思いますよ。

    ・コピー先のデータベースがサーバなどにある場合、自分のローカル等に場所を変更しても同じ現象になるか

    ・どのオブジェクト(テーブル、クエリ、フォーム、レポート等)をDocmd.CopyObjectしても同じ現象になるか

    ・コピー先のデータベースを変えてみても同じ現象になるか

     新規で空のデータベースを作成して試してみるといいかもしれません

    ・mdb形式、accdb形式、adp形式のすべてのファイル形式で同じ現象になるか

    ・Office セーフ モードで実行した場合はどうか (参考:Office セーフ モードで作業する)

    Lagarさんの返信お待ちしていますね。


    石田 優 – Microsoft Support

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません