64bit版WindowsでEXCELからmdbファイルを開けない
先日、EXCELで作成されていたアプリケーションがあり、Access2003までで使われていたmdb形式ファイルにアクセスする部分で異常終了するという状況が起こりました。
エラーコードは0x80004005だったと記憶していますが、エラーコードで調べてもすぐに情報が出てきません。
それまでは動作していたし、他の環境でも動作は確認されているという事で、なぜトラブルに至ったかのきり分けが必要でした。
VBAをステップ実行し、エラー箇所を特定したところ、
mdbをオープンするするところで
Provider=Microsoft.Jet.OLEDB.4.0
となっている接続文字列に行き当たりました。
そのエラーの出るWindows7は64bitバージョンですので、おそらくライブラリ参照の不整合か、あるいはなくなってしまったライブラリである事が想像されました。
Provider=Microsoft.ACE.OLEDB.12.0
と接続文字列を変更するとこのエラーは消え、正常に動作するようになりました。それ以外の部分も正常に動作しています。
Windows7は32bitと64bitでは完全に互換性のない部分があり、64bitで再構築する際に、ある程度古くなってしまったライブラリなどは64bit化していません。
今回のJet.OLEDB.4.0もその一つです。
すべてがそうではないのですが、一部そういった互換性の問題に当たると、原因を突き止めるまでに時間がかかり困る事があります。
そういった部分では、32bitのWindows7と32bitのOfficeを選んでおく方が、互換性という点では64bitバージョンに勝ると言えます。
将来的にWindows8以降でそのライブラリが存続するかは不明ですので、ある程度古くサポートをやめてしまったライブラリへの参照は今のうちに見直しておく必要がありそうです。