2013/05/02

Access 2007+VBAでCurrentProject.Connectionを実行すると「クラスが登録されていません」のエラーがでた場合の対処法

2013-05-02_163446
Access 2007+VBAで開発したファイルを久しぶりに実行したところ、on errorを使ったエラー処理が実行されました。

現象と対処法をメモしておきます。

現象

ADOを利用し内部クエリを実行するとCurrentProject.Connectionの行で

  • 実行エラー’-2147221164(80040154)
  • クラスが登録されていません

と表示される。

2013-05-02_163446

原因

原因はKB2459087に明記されていました。

Acc: Connection Error when using CurrentProject.Connection or CurrentDB.Connection - Microsoft Support

原因を読むと、Access Connectivity Engine(ACE)のdll「ACEOLEDB.dll」のパスがレジストリに正しく登録されていないため!とのこと。

この現象は、Access 2007,2010,2013で発生するそうです。

本現象が発生した環境は

  • Windows 7 64bit
  • Access 2007 32bit

ですので、下記レジストリが実際に登録されているか調べてみた結果、残念ながらこのレジストリ情報は登録されていませんでした。

Key: HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{3BE786A0-0366-4F5C-9434-25CF162E475E}\InprocServer32\

Value Name: 規定

Value Data: C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12\ACEOLEDB.DLL

2013-05-02_170152

対処法

対処法ですが、同現象の方々を参考に「Officeの修復機能」を使って改善しました。

修復の手順は

Office 2007 を修復する方法 - Microsoft サポート

を参考にしてください。

修復完了後、マシンを再起動しレジストリをチェックしたところ、HKEY_CLASSES_ROOT配下に正しいレジストリ情報が登録されていました。

おかげさまでエラーが出たAccessファイルも正しい動作をしました。

2013-05-02_171923


今回の現象が起きたきっかけは全く分かりません。

半分開発&検証用マシンのため、あれやこれやを入れては試験しているので・・・

本当は開発用と検証用を分けるべきなんでしょうが予算の関係上そう簡単にはできませんのね~ふぅ


スポンサーリンク

スポンサーリンク