MS Officeのアーキテクチャ(32/64bit)とODBCと
先日嵌ってしまったので備忘メモです。
アーキテクチャという語は、さまざまな文脈で使われて捉えどころの難しい用語だと思いますが、本稿では
32bitなのか、64bitなのかという意味で使っております。
ODBC使い慣れている方には常識レベルかと存じますが…
使い慣れたExcelなどから、ハイエンドやオープンソースなど種々のRDBMSを利用したいときの頼もしい助っ人、
ODBC。
ところで、MySQLやSQLiteなどでは、ODBCドライバーが32bit版と64bit版と、アーキテクチャ別に提供されています。では、
どっちを使えばトラブらないのか?
結論から言うと、
ODBCドライバーのアーキテクチャは、OSのアーキテクチャではなくて、
アプリケーションのアーキテクチャと合わせればよい。
ということです。
例)
Windowsが64bit
Officeが32bit
だったら、ODBCドライバーは
32bitのほうをインストールして使う必要があるわけですネ!
だめな例)
Windowsが64bitだからドライバーも64bitがいいよね~てなこと思いながら64bitのODBCドライバー(この例ではSQLite3)
だけインストールした状況で、32bitのExcelを使い、VBAにて
Set db = New ADODB.Connection
db.ConnectionString = "Driver=SQLite3 ODBC Driver;Database=C:\path\to\dbfile"
db.Open
としてDBへの接続を試みると、うまくいきません。
DSN未設定の場合(上記の例)
エラー 80004005 「データ ソース名および指定された既定のドライバーが見つかりません。」
DSN設定済の場合(例:db.ConnectionString = "DSN=SQLite3ODBC")
「指定されたDSNには、ドライバーとアプリケーションのアーキテクチャの不一致が含まれています。」
と
エラーになります。
さて、使っているOfficeは32bit?64bit?
どっちでしょう??
MS Officeのアーキテクチャを確認する手順は、下記画像のとおり、
ファイルタブで現れる画面から
アカウント →
○○○のバージョン情報をクリックします。画像はExcel 2013での例です。
なお、Microsoftによれば、
32 ビットの Office がほとんどのユーザーにお勧めです。…とのことです。
以上参考になることがありましたら幸甚です。
バージョン情報を開く
この例では32bit
関連情報 Microsoftサポート「Office 2013 の 64 ビット版」