社内SEの話

日々起きたことの記録用

Access ODBCで接続できない

↓プログラミングで副業を考えたらこちら↓

Access ODBCで接続できないトラブルの原因と解決方法

月に一度様々な集計をするためにAccessを起動してODBCで各DBからデータを取得しVBAで様々な計算をして結果レポートを提出する業務があります。

この業務自体の可否については今回の課題では無いため割愛します。

環境

Windows10 64bit

接続データベース Oracle 11g 32bit

どうなった

データ処理を実行したら、下記のメッセージが表示されました。

「?」

かれこれ10年近く動き続けたAccessなのでプログラムの問題ではなさそう。

ODBCへの接続が失敗しました。

テーブルをデータシートビューで開くことができません。

ODBCがおかしくなった?

ODBCでトラブルになっていないか確認します。

※サンプルなので新規作成画面を表示しています。

接続テストの結果は正常でした。

Officeがおかしくなった?

Officeのバージョンアップしておかしくなったのか、もしくは逆に重大な欠陥があるためアップデートをしたほうがいいのか確認します。

アカウント情報から更新オプションを起動します。

特に問題はありませんでした。

Officeが64ビットになっています。

32ビットを疑ってまずOfficeをアンインストールします。

アンインストールしたら一度PCを再起動します。

Microsoft 365 32ビットをインストール

下記サイトにサインインしてください

www.office.com

マイアカウント - アプリとデバイスを選択するとOfficeのダウンロードページが表示されます。

言語を日本語にしバージョンを32ビットにします

Office 365の他に Microsoft Access database engine
2010(Japanese)の64ビット版がインストールされており、共存して32ビット版がインストールできないとでました。

Officeをインストールできませんでした

このインストールは32ビット版Officeですが、次の図ビット版Officeアプリケーションがこのコンビューターに既にインストールされています

MicrosoftAccessdatabaseengine2010(Japanese)

お使いの64ビット版アプリケーションで動作する64ビット版Officeをインストールする場合は、[64ビット版をインストールを選択してください。32ビット版を使用する場合はキャンセルを選択して、64ビット版Officeアプリケーションをアンインストールして、この32ビット版インストールをもう一度開始してください。  

というエラーが発生しました。

プログラムと機能にプログラムがあるので単独でアンインストールしてあげます。

共存プログラムが消えたら前述でダウンロードしたプログラムをインストールすることができます。

インストール後に再度問題のAccessを起動し動作確認をします。

結果は問題なく動作しました。

原因と結論

先日検証目的で64ビット版のOfficeにしたのを完全に忘れていました。

そのため発生したトラブルでした。

今回のトラブルの根本は、まずOracle が32ビットを使っていたことです。

そしてPCにインストールされているOracle
Clientが32ビットになりODBCも32ビットのドライバーを使っています。

Officeはアーキテクチャによって接続するODBCが変わります。

そのため64ビット版OfficeであればODBCは64ビット。32ビット版OfficeであればODBCは32ビットしか接続できません。

それなのにOfficeが64ビットになっており接続できなかったという訳になります。