#概要
超久しぶりにExcel VBAを触ることになったんですが、
その内容がMySQLからデータを取ってきて
指定のセルに入れるって処理で。
多分、しばらくこの手の話はこないだろうから、
備忘のために手順を残しておきます。
#準備
ODBC Driver for MySQLをダウンロードします
①https://www.mysql.com/jp/products/connector/にアクセスします。
②ODBC Driver for MySQL (Connector/ODBC)のダウンロードボタンをクリックします。
③お使いのパソコン環境に合わせて、インストーラーのDownloadボタンをクリックします。
④以下のような画面が表示されるので、とりあえず「No thanks, just start my download」をクリックします。
⑤インストーラーがダウンロードされます。ダウンロード完了したら、インストーラーを起動します。
⑥インストーラーが起動したら、以下のような画面が表示されます。「Next」をクリックしてください。
⑦続いて以下のような画面が表示されます。「License Agreement」をよく読み、問題なければ「I accept・・・」を選択した上で、「Next」をクリックしてください。
⑧セットアップ種別の選択画面が表示されます。とりあえず「Typical」を選択し、「Next」をクリックしてください。
⑩インストールが完了したら、以下のような画面が表示されます。「Finish」をクリックしてインストーラーを終了します。
#Excel VBA実装例
ここからは、VBAで処理を実装してみます。
Excelを起動し、開発者タブのVisual Basicをタッチします。
コードエディタが起動します。
ボタンをクリックしたら、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との接続情報をセットしてください。