通常、私は開発したAccessのプログラム(ツール)をリリースするにあたり、ACCDEファイルを作成してエンドユーザーから改変されることを防ぎます。
ある程度作り込んでいるのでちょっと分かる方にクエリやフォームのデザイン(プロパティ)、ソースコードを改変されると非常に困るからです。
ところが、時々ACCDEの作成で「ACCDEファイルを作成できませんでした」というエラーが表示されることがあります。
今回はこの原因と対策についてご紹介します。
ACCDEファイルを作成できませんでしたの原因
ACCDEファイルを作成する際に表示されるエラー
このエラーは通常、大きなデータベースを MDE ファイルにコンパイルする場合に起こります。
データベースをコンパイルするのに、多くの TableID 参照がテーブルごとに作成されます。
Access データベース エンジンでは一度に 2,048 までの空き TableID しか作成できません。
テーブル、マクロ、フォーム、レポートなどの多くのオブジェクトを含むデータベースを MDE ファイルとしてエクスポートする場合に上限を超える可能性があります。
Access データベース エンジンでデータベースを MDE にコンパイルするときに使用される TableID の数を正確に推定することはできませんが、VBA モジュールとフォームでそれぞれ 1 つの TableID を使用します。
そのため、データベースに 500 のフォームが含まれていて、それぞれのフォームの “HasModule/コード保持” プロパティに [はい] が設定されている場合には、1,000 の TableID が使用されることになります。
エラー詳細を見ると、プログラムが大きすぎる(フォームやテーブル、クエリ、レポートなどのオブジェクトが多い場合)時に発生するとあります。
が、「そんなに大きくないけど…」という時に同じエラーメッセージが表示されるので大変分かりにくいです。
ACCDEが作成できない原因
上記のように本当にサイズが大きすぎて作成できないこともありますが、他にもコンパイルエラーがある場合にもACCDEの作成に失敗します。
- ACCDBファイルのオブジェクトが多すぎる
- コンパイルエラーがある
- その他
ほとんどの場合が②コンパイルエラーがあるに該当するかと思います。
私はこれまでに①と③に起因するエラーになったことありません。
ACCDEファイルを作成できませんでしたの対策
VBAエディタ画面からデバッグ→コンパイルを実行すると、コンパイルエラーが表示されます。
1つずつコンパイルエラーが出ている箇所をデバッグしてエラーをつぶしてしまえばACCDEファイルは作成できます。
【デバッグ→コンパイル】がグレーアウトしてクリックできない方は一旦プログラム中にDebug.printなど入れてみるとコンパイルが有効になります。
まとめ
ACCDEファイルが作成できない原因は大抵「コンパイルエラー」です。
デバッグでコンパイルエラーをつぶしてから再度ACCDEファイルを作成しましょう!