Accessで『データベースに含まれているVBAプロジェクトを読み取れないため、…』エラーへの対応

:::note warn
『原因は分からないけどこうやったら直った』レベルの参考情報です。
:::

# 現象

Microsoft365のAccessでaccdbのシステム作成。
バージョンは下記。
Microsoft Access for Microsoft 365 MSO (バージョン 2302 ビルド 16.0.16130.20332) 32 ビット

そして作ったものをAccess Runtimeで開いた。
バージョンは下記。
Windows 10 IoT Enterprise 22H2 19045.2788
Access Runtime 2016 バージョン16.0.4288.1001

すると下記ダイアログでエラー。

>データベースに含まれているVBAプロジェクトを読み取れないため、データベースを開くことができません。データベースを開くには、VBAプロジェクトを削除する必要があります。VBAプロジェクトを削除すると、モジュール、フォーム、およびレポートからすべてのコードが削除されます。データベースを開いてVBAプロジェクトを削除する前に、バックアップコピーを作成することをお勧めします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/725b28b0-c2b3-2dc7-7357-6bdedb0341df.png)

ダイアログにも書いてあるけど、OKボタン押すとVBAソースコードが **全部消える** 。
 **ぜ・ん・ぶ・き・え・る！！！！**

キャンセル押しても同じダイアログが何回も出てくる…。

あきらめてOKボタン押した。
(；´д｀)=3

同じ環境であってもエラー無く開ける端末はある。
（同じ環境 = OSとAccess Runtimeのバージョンが同じ）

つまり、実行環境（端末）に依存する問題と思われる。

# Access Runtimeの修復では解決せず

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/55336404-c89f-a42f-ac05-5cd6b476ef7c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/c23cb72d-d51d-b79c-cd6b-bec74941c272.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/c69297ca-5356-528c-db03-d60e94f00bed.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/2b3cf927-c9bb-4ec3-ecfa-5f57b772aba6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/a8259ec2-5ebc-64b7-4853-292c1a6a48d8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/2bafe9ce-882b-41cd-c40e-d96dd2932b64.png)

# Access Runtimeの再インストールでも解決せず

一旦Access Runtimeをアンインストール。
問題無く動く端末だと下記なので32bit版を再インストール。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/bde895c2-666c-259a-0810-665e8727b5f0.png)

https://www.microsoft.com/ja-jp/download/details.aspx?id=50040

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7dd5563d-eb43-a664-454d-4235276af089.png)

# 互換性のトラブルシューティングでも解決せず

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/598dfb53-4269-e058-3765-be891817817e.png)

『推奨設定を使用する』をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/c498377b-eb17-2805-9683-70c6d309196d.png)

『プログラムのテスト』をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/9d7fbd87-f3d7-a652-cac4-c73b5cb56eeb.png)

Runtimeなのでプログラムのテストで下記になるが無視。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/cee2a76a-acc2-ff4a-cefc-14546e1c5745.png)

『プログラムのテスト』ボタンがある画面で『次へ』ボタン。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/a32622e2-8af8-b2a9-d892-9b03b77492ef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/4ddb12cb-cc36-41f3-e3d0-80704cfa87f7.png)

シャットダウン ⇒ 起動。

# データベースの最適化修復しても解決せず

下記をやったがダメだった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/dafa17e0-ff55-075a-ae06-2cc8716d2513.png)


# 全角や半角カタカナは不使用

このエラーに関してネットで検索すると『フォーム名に半角カタカナがあると…』という記事がよく見つかった。
しかし、フォームはもちろん、テーブル名、カラム名、Function名、Sub名、変数名においても全角や半角カタカナは不使用だった。

# オブジェクト再作成したらなぜか直った…

下記のように『空のaccdb』を作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/fc479b57-8dfe-2aa0-20bb-0faa90321eb4.png)

『問題が起きているaccdb』 ⇒ 『空のaccdb』へテーブルやフォームやクラスなど、とにかく全てのオブジェクトをコピー。

下記の設定項目についても『問題が起きているaccdb』を参照して全く同じにした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/a3ea6b5f-6d4c-60d1-6ba5-49b595f6d1ef.png)

そうやって『空のaccdb』を元にオブジェクトを再作成したものだと問題無く起動した。

# 蛇足

開発中の動作確認で起きたので、さほど影響大きくなかったのは不幸中の幸い。

『原理は分からない（腑に落ちない）けど、とにかくこうすれば直る』はあんま好きじゃないけど、ままええわ…。

# 参考サイトさん

https://blog.treedown.net/entry/2020/12/08/010000