ms accessにおいて csvからテーブルへデータを読み込む際に
列の数や型が違っていたりすると、
読み込みのエラーのmsgboxとともに
accessの画面左側に エラーの内容を記録するテーブルも作成されますが、
オンラインで購入したaccessのファイルに
Name AutoCorrect Save Failuresというテーブルが
画面左側のナビゲータに表示されますが、
そしてその内容に
object nameに frmEdit, object type にForm,
reason の列に could not open the objectという
データが記録されていて、
オブジェクト一覧に frmEditというフォームがない状態なのですが、
これはこのaccesファイルの製作者が
vbaコード内で frmEditか何かを参照しているが、
そのオブジェクトを作り忘れている、ということでしょうか?
↓
はい、おそらく以下のような原因が考えられます。
### 1. **VBAコード内で`frmEdit`を参照しているが、
フォームが存在しない**
- `DoCmd.OpenForm "frmEdit"` や
`Forms!frmEdit!ControlName` などのコードが
VBA内に記述されている可能性があります。
- しかし、`frmEdit` というフォームが作成されていないため、
Accessがオブジェクトを開こうとした際にエラーが発生している可能性が高いです。
### 2. **削除されたフォームが参照されている**
- `frmEdit` というフォームが過去に存在していて、
削除されたが、その参照がVBAコード内に残っている場合もあります。
### 3. **マクロやクエリで`frmEdit`を参照している**
- VBAコードではなく、
マクロやクエリ内で`frmEdit`を参照している可能性もあります。
### 4. **Accessのオートコレクト機能によるエラー**
- `Name AutoCorrect Save Failures` テーブルは、
オートコレクト機能が名前の変更に伴ってエラーを記録するために
作成されることがあります。
- 例えば、フォームの名前を変更した後に、
VBAやマクロで古い名前 (`frmEdit`) が残っていると、
「オブジェクトを開けませんでした」というエラーが発生することがあります。
---
### **対策**
1. **VBAコード内を検索**
- `frmEdit` という名前をVBAコード内で検索 (`Ctrl + F`) し、
どこで参照されているかを確認する。
- `CurrentDb.QueryDefs` や `DoCmd.OpenForm` などの命令を探す。
2. **マクロやクエリを調査**
- `frmEdit` を参照しているマクロやクエリがないか調べる。
3. **オートコレクトの履歴をクリア**
- **「ファイル」→「オプション」→「現在のデータベース」** から
**「名前の自動修正情報を保存する」** のチェックを外してみる。
- その後、Accessを再起動してエラーテーブルが作成されるか確認する。
4. **オブジェクトの依存関係を確認**
- `frmEdit` を参照しているオブジェクトがあるかどうか、
「デザインビュー」から **「オブジェクトの依存関係」** を確認する。
---
### **結論**
Accessのエラーメッセージから判断すると、
VBAコードやマクロ内で `frmEdit` を参照しているが、
そのオブジェクトが存在しないために
エラーが発生している可能性が高いです。
VBAコードやマクロを調査し、`frmEdit` という参照を
削除または修正することで解決できると思われます。
コメント
コメントを投稿