0

私は、過去 6 年間連続プロジェクトであった Access ADP プロジェクトを持っているため、数百のフォームと数千行の VBA コードがあります。最近の更新後、コンパイルして ADE ファイルを作成できません。テキスト ボックスの 1 つが存在しないと表示されますが、存在します。for を削除し、作業中のバックアップから再インポートしましたが、それでも同じエラーが発生します。プロジェクト全体を新しいADPファイルにインポートしようとしましたが、まだコンパイルされず、圧縮して修復し、/decompileも試みました

この問題を解決するのに役立つトリックやソフトウェアパッケージはありませんか?

4

4 に答える 4

2

私はADPを使用していませんが、MDBでは、フォーム上のコントロールを参照するためのこれら2つの構文に違いがあります。

  Me.MyControl
  Me!MyControl

1つ目は、Accessがコントロールを返す非表示のプロパティを作成する原因です。この結果、コントロールへの参照のコンパイル時チェックが行われます。

2つ目は、現在のフォームのデフォルトのコレクションを使用し、コンパイル時のチェックを提供しません。

VBAはADPでもMDBでも同じように機能すると思いますが、問題のあるコントロール参照をドットではなくbangに変換してみませんか?これにより、コンパイル時のチェックが不要になり、面倒な再構築を行わなくてもプロジェクトをコンパイルできるようになる可能性があります。

それが機能する場合は、コントロールを削除して(非表示のプロパティ定義を削除するため)、新しい名前でコントロールを追加してからコンパクトにします(ADPを逆コンパイルできるかどうかはわかりませんが、可能であれば、同様に逆コンパイルする必要があります)。理論的には、これにより問題のある非表示のプロパティ定義が完全に削除され、それが問題の原因である場合は、ドット演算子に戻ってコンパイル時のチェックを取り戻すことができるはずです。

価値のあることとして、ドット演算子での破損の問題が多すぎて、すべてのプロジェクトで常にバングを使用しています。コントロール参照のコンパイル時チェックがなくても大丈夫です。

そして、ああ、ところで、あなたは自動Intellisenseを失います(Intellisenseがいくつかのコンテキストで邪魔になることがあるので、場合によっては祝福です)が、CTRL-SPACEを使用して別のIntellisenseリストを呼び出すことができます。このリストはコントロールタイプに限定されませんが、入力を開始すると、リスト内の適切な場所にジャンプする通常のオートコンプリートが表示されます。

于 2009-04-08T03:46:59.270 に答える
0

birgerのアプローチでうまくいかない場合は、SaveAsTextメソッドを使用して各モジュールを保存することを検討してください。次に、birgerが提案したように、フォームとテーブルのみをインポートします。次に、LoadFromTextメソッドを使用してモジュールを再作成します。

于 2009-04-07T20:52:58.050 に答える
0

Debug -> Compileときどき、 ADE ファイルを作成する前に手動でクリックする必要があることに気付きました。

次の手順は、コンパイルできない ADP ファイルに役立つ場合があります。

  1. デバッグ -> コンパイル
  2. コンパクト/修理
  3. 次にADEを作ります
于 2011-09-06T03:26:19.753 に答える