4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mysqlへExcelVBAから接続する。64bit Winに32bit Excelをインストールしている場合。

Posted at

はじめに。

Excelからmysqlへ接続するためのodbcドライバの設定で少しつまずいたのでその時のメモです。
Excelからドライバを使う場合は、Excelに合わせて32/64bitを選択しインストールする必要があります。この点を理解しておらず、OSが64bit、Excelが32bit版だったため、エラーを繰り返しました。わたしの環境の場合、「mysql installer」からODBCをインストールしようとしても64bit版しか選択できず、個別インストーラーを利用する必要がありました。

odbcドライバのDL/Install

以下のどちらかからインストールする。

インストール

Visual studio 2005 C++ redistなんたらが必要と英文msgが表示されたらマイクロソフトのサイトから探してインストールする必要があります。再配布なんたらというやつ。

ドライバを登録する。

インストール完了後、コンピュータにドライバを登録する。

  • コントロールパネル⇒管理ツール⇒以下のいずれかを開く

    • 64bit Excel
      • 「ODBC データ ソース (64 ビット)」
    • 32bit Excel
      • ODBC Data Sources (32-bit)
  • ユーザDNSタブ選択し追加

  • Mysql ODBC 8.0 ANSI driver を選択。

    • ここにmysqlドライバがない場合、インストールに失敗している。
  • 接続情報を入力。
    odbc.png

  • Data source name :適当

  • Description:任意

  • tcp/ip:IPaddress or hostname

  • user:mysqlのユーザ

  • password:上記ユーザのパスワード

  • database:接続データベース

    • 上記の情報に誤りがなければここに利用可能データベースがリストされる。
    • 表示されない場合、認証情報かIPアドレスに誤りがある。

#Excel 設定

参照設定

  • Microsoft ActiveX Direct Data objects ##.## Library
  • Microsoft scripting runtime(必要かどうか未確認)

コネクションストリング(接続識別子)

Driverで接続する
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;"

DSNで接続する。
'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] データ ソース名および指定された既定のドライバーが見つかりません。

⇒上記と同様か、あるいはドライバー名などが間違っているか。

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?