LoginSignup
5
7

More than 1 year has passed since last update.

ExcelからMySQLのデータを取得する

Last updated at Posted at 2020-10-11

#概要
超久しぶりにExcel VBAを触ることになったんですが、
その内容がMySQLからデータを取ってきて
指定のセルに入れるって処理で。

多分、しばらくこの手の話はこないだろうから、
備忘のために手順を残しておきます。

#準備
ODBC Driver for MySQLをダウンロードします
https://www.mysql.com/jp/products/connector/にアクセスします。
②ODBC Driver for MySQL (Connector/ODBC)のダウンロードボタンをクリックします。
image.png

③お使いのパソコン環境に合わせて、インストーラーのDownloadボタンをクリックします。
image.png

④以下のような画面が表示されるので、とりあえず「No thanks, just start my download」をクリックします。
image.png

⑤インストーラーがダウンロードされます。ダウンロード完了したら、インストーラーを起動します。

⑥インストーラーが起動したら、以下のような画面が表示されます。「Next」をクリックしてください。
image.png

⑦続いて以下のような画面が表示されます。「License Agreement」をよく読み、問題なければ「I accept・・・」を選択した上で、「Next」をクリックしてください。
image.png

⑧セットアップ種別の選択画面が表示されます。とりあえず「Typical」を選択し、「Next」をクリックしてください。
image.png

⑨インストールが始まります。
image.png

⑩インストールが完了したら、以下のような画面が表示されます。「Finish」をクリックしてインストーラーを終了します。
image.png

#Excel VBA実装例
ここからは、VBAで処理を実装してみます。
Excelを起動し、開発者タブのVisual Basicをタッチします。
image.png

コードエディタが起動します。
ボタンをクリックしたら、MySQLのあるテーブルにSELECT構文のSQLを発行し、データを取得する例です。
※エラー処理は端折ってます。

Private Sub DataGetButton_Click()

    Dim AdoConnection As Object ' ADO コネクション
    Dim AdoRecordSet As Object  ' ADO レコードセット
    Dim SQL As String    ' SQL文
    
    ' ADOコネクションを作成します
    Set AdoConnection= CreateObject("ADODB.Connection")
    
    ' ODBC接続を行います
    AdoConnection.Open _
        "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
        " SERVER=(servername);" & _
        " DATABASE=(databasename);" & _
        " UID=(username);" & _
        " PWD=(password);"
    
    ' SQL文を作成します
    SQL = "select tbl_aaa.ID, " & _
            "       tbl_aaa.name, " & _
            "       tbl_aaa.item_num, " & _
            "       tbl_bbb.item_name " & _
            "from tbl_aaa " & _
            "inner join tbl_bbb on tbl_bbb.ID = tbl_aaa.item_id "
    
    ' SQLを実行します
    Set AdoRecordSet = AdoConnection.Execute(SQL)
    
    ' 取得したレコードを適当なセルに表示していきます
    i = 1
    Do Until AdoRecordSet.EOF
        Cells(i, 1) = AdoRecordSet!ID
        Cells(i, 2) = AdoRecordSet!name
        Cells(i, 3) = AdoRecordSet!item_name
        Cells(i, 4) = AdoRecordSet!item_num
        
        ' 次のレコードに移動
        AdoRecordSet.MoveNext
        i = i + 1
    Loop
    
    AdoRecordSet.Close
    AdoConnection.Close
End Sub

(servername)、(databasename)、(username)、(password)には、MySQLとの接続情報をセットしてください。

5
7
2

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
5
7