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
コメント