はじめに。
Excelからmysqlへ接続するためのodbcドライバの設定で少しつまずいたのでその時のメモです。
Excelからドライバを使う場合は、Excelに合わせて32/64bitを選択しインストールする必要があります。この点を理解しておらず、OSが64bit、Excelが32bit版だったため、エラーを繰り返しました。わたしの環境の場合、「mysql installer」からODBCをインストールしようとしても64bit版しか選択できず、個別インストーラーを利用する必要がありました。
odbcドライバのDL/Install
以下のどちらかからインストールする。
- mysql installer(mysql製品の追加削除更新を管理するツール)
- mysqlの公式サイトから個別インストーラをDL
インストール
Visual studio 2005 C++ redistなんたらが必要と英文msgが表示されたらマイクロソフトのサイトから探してインストールする必要があります。再配布なんたらというやつ。
ドライバを登録する。
インストール完了後、コンピュータにドライバを登録する。
-
コントロールパネル⇒管理ツール⇒以下のいずれかを開く
- 64bit Excel
- 「ODBC データ ソース (64 ビット)」
- 32bit Excel
- ODBC Data Sources (32-bit)
- 64bit Excel
-
ユーザDNSタブ選択し追加
-
Mysql ODBC 8.0 ANSI driver を選択。
- ここにmysqlドライバがない場合、インストールに失敗している。
-
Data source name :適当
-
Description:任意
-
tcp/ip:IPaddress or hostname
-
user:mysqlのユーザ
-
password:上記ユーザのパスワード
-
database:接続データベース
- 上記の情報に誤りがなければここに利用可能データベースがリストされる。
- 表示されない場合、認証情報かIPアドレスに誤りがある。
#Excel 設定
参照設定
- Microsoft ActiveX Direct Data objects ##.## Library
- Microsoft scripting runtime(必要かどうか未確認)
コネクションストリング(接続識別子)
Sub mysqltest()
'MySQL 接続
Dim con As New ADODB.Connection
con.ConnectionString = "Driver={MySQL ODBC 8.0 ANSI Driver};" & _
"Server=localhost;" & _
"Port=3306;" & _
"Stmt=SET NAMES SJIS;" & _
"Database=testdb;" & _
"Uid=root;" & _
"Pwd=1111;"
'Driver名ではなく下記のようにDSNを使っても接続できる。
con.ConnectionString = "DSN=mysql32driver;" & _
"Server=localhost;" & _
"Port=3306;" & _
"Stmt=SET NAMES SJIS;" & _
"Database=testdb;" & _
"Uid=root;" & _
"Pwd=1111;"
#Excel VBAでエラーメッセージが表示される場合
[Microsoft][ODBC Driver Manager] 指定された DSN には、ドライバーとアプリケーションとのアーキテクチャの不一致が含まれています
⇒ドライバの32/64と、Excelの32/64の不一致。
ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。
⇒上記と同様か、あるいはドライバー名などが間違っているか。