2017-01-11 5 views
0

私はMS Access 97で開発されたMS Accessプロジェクトを持っています。それはMS Access 2016に正常に変換されました。すべてがうまく見えますが、私は非常に奇妙な行動に気付きました。安全でないコンテンツを有効にした後にMS Accessフォームが壊れる

ユーザーが最初にクライアントモードでプロジェクトファイルを開くと、多くのマクロエラーがポップアップします。ユーザーがこのファイルの安全でないコンテンツをまだ許可していないため、これは正常な動作です。ユーザーがすべてのエラーを閉じた後、「安全でないコンテンツを許可する」ボタンを押してファイルを閉じます。これで、ユーザーはプロジェクトを再度開き、正しく動作しません。いくつかのフォームが呼び出され、呼び出されてはならず、「モジュールが見つかりません」というエラーがポップアップします。私はこのプログラムのためのモジュールを開発しませんでした。したがって、安全ではないコンテンツを最初に許可しないでファイルを開くと、プロジェクトが完全に台無しになり、新しくコピーしたファイルに置き換えないと回復できなくなります。

ただし、ユーザーにプロジェクト.accdbファイルの新しいコピーがあり、そのファイルが信頼できる場所にある場合、すべて正常に動作します。プロジェクトを信頼できる場所に置かずに正しく実行させるもう1つの方法は、Shiftキーを押しながら「安全ではないコンテンツを許可する」ボタンを押しながら開くことです。その後、ユーザーは通常、ダブルクリックでファイルを実行することができ、それは正常に動作します。

したがって、安全でないコンテンツを許可せずにこのファイルを開くと、最初にプロジェクトが破損します。また、デフォルトで呼び出されるフォームのVBAコードを開こうとしましたが、VBAコードウィンドウはフリーズしています。他のフォームも正常に動作しています。 enter image description here

この問題をどのようにデバッグできますか?

UPD:安全でないコンテンツが有効になっていない間にマクロを実行しようとすると、問題が発生しているように見えます。

UPD:は、私はもう一つのことに気づいた - 私が最初に危険なコンテンツを許可せずにプロジェクトを実行する場合、私は、「コンテンツを許可」を押すと、単にプログラムを終了していない - 私はまだそれを実行することができますよ信頼できる場所から。だから私は "コンテンツを有効にする"ボタンを押すと、破損が発生します。私のフォームにはOnCloseアクションが付加されたマクロがあります。しかし、私はこのフォームからすべてのマクロを削除しようとしましたが、それは助けになりませんでした。

+0

あなたは誤った仮定をしています。まず、データベースにはモジュールがあります。 1つのフォーム内の1つのイベントがスクリプト化されると、そのフォーム用のモジュールが生成されます。第二に、そして最も重要なのは、あなたは「危険なコンテンツ」という言葉を真剣に受け止めているということです。 MS Accessの場合、少しずつVBAコードが「安全でない」です。これは、インターネットからダウンロードしたランダムなファイルを開くことから保護するか、または電子メールを受け取ってから保護します。ハウス内で開発されたファイルの場合、安全だけでなく、VBAを妨げにならないように実行することが不可欠です。 – SunKnight0

+0

@ SunKnight0データベースにモジュールがないとは限りませんでした。私はそれらのどれも開発しなかったことを意味しました。そして、あなたが正しいです、Accessにこのファイルの安全でないコードを実行させることに何も問題はありません。そして、私は "安全でない"という意味を理解しています。新しくインストールされたWindowsの新規ユーザーが、安全でないコンテンツを最初に許可しないで誤って.accdbファイルをダブルクリックしてプログラムが破損することがあります。この場合、私は彼らにプロジェクトの新しいコピーを与える必要があります。それが私の問題です。 – fakemeta

+0

@ SunKnight0より明確にする - 通常、ユーザーがマクロを持つ新しい.accdbファイルを実行すると、起動時にエラーが発生し(マクロなどの安全でない動作についての情報)、「コンテンツを有効にする」ボタンが表示されます。ユーザーがボタンをクリックすると、プログラムはマクロエラーなしで再起動し、正常に動作します。しかし、私の場合、プログラムは破損で再起動し、私はこれらの破損を元に戻すことはできません。 – fakemeta

答えて

0

私はもう少し奇妙な問題に遭遇しましたが、デバッグ中にシステムにMS Office 2000のフットプリントがいくつかあることがわかりました。私はMS Officeをアンインストールし、Windowsレジストリをきれいにし、MS Officeを再インストールすることに決めました。これは私のすべての問題を解決しました。

関連する問題