MySQLデータベースへ接続してデータをExcelに書き出すマクロ

コンピューターのお仕事
スポンサーリンク

MySQLの情報を直接エクセルシートへ転記するマクロをつくりました。実行すると顧客名の一覧がエクセルシート表示されます。

MySQLなどのデータベースで顧客情報などを管理している企業は多いとおもいますが、SQL文を自在に使いこなすのは難しいので扱える人は限られてきます。

Excelにデータベースを書き出してしまえば、多くの人が簡単にデータを扱えると思います。気に入っていただければ、使ってみてください。

スポンサーリンク

Excel VBAソースコード

'参照設定で、 Microsoft ActiveX Data Objects 2.6 Library にチェック
'シート名を指定すれば、MySQLデータベースから現在アクティブな顧客リストが表示されるマクロ
'下記デバッグコードは問題切り分け時に利用(Debug.print)

Public Function db_connect(sheet_name As String)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cn_settings As String
Dim st_Sql As String
Dim i(1 To 10) As Integer

On eroor GoTo db_connect_err
'ODBCドライバーは使っているバージョンを記述する
cn_settings = "driver={mysql odbc 3.51 driver};" _
            & "server=サーバー名;" _ 
            & "database = データベース名;" _ 
            & "user = ユーザー名;" _ 
            & "password = パスワード;" _
            & "stmt= set names cp932;" 'windowsで扱える文字コードを指定

st_Sql = "select * from vi_customer"
                    
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open cn_settings
rs.Open st_Sql, cn, adOpenKeyset, adLockOptimistic

i(1) = 2

Range("A2:B44").ClearContents
Worksheets(sheet_name).Range("a2:b44").ClearContents

Do Until rs.EOF

’Debug.Print rs!number & " " & rs!c_name
Worksheets(sheet_name).Cells(i(1), 1) = rs!number
Worksheets(sheet_name).Cells(i(1), 2) = rs!c_name

'Debug.Print i(1)
i(1) = i(1) + 1
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

db_connect_exit: 
Exit Function
db_connect_err: 
MsgBox (Err.Number & " " & Err.Description)
Resume db_connect_exit
               
End Function

Excel VBAを勉強中の方におすすめの書籍

コメント

タイトルとURLをコピーしました