VBAから
・SQL ServerへSELECT文を実行
できます!
前提
・「Microsoft OLE DB Driver for SQL Server」がインストールされていること。
VBAコード
ここでは例として、
・テーブル「employee」へSELECT文を実行して
・取得したデータをシートへ張り付け
します。
※エラー処理もします。
Option Explicit
Sub sample()
'プロバイダ
Const PROVIDER As String = "MSOLEDBSQL"
'サーバー名
Const SERVER_NAME As String = "localhost\SQLEXPRESS"
'DB名
Const DB_NAME As String = "sampleDB"
'ユーザー名
Const USER_NAME As String = "XXXXX"
'パスワード
Const PASSWORD As String = "XXXXX"
Dim ws As Worksheet
Dim sql As String
Dim conStr As String
Dim con As Object
Dim rs As Object
'シート
Set ws = Worksheets("sample")
'SELECT文
sql = "SELECT id,name,sex,section FROM employee"
'接続文字列の組み立て(SQL Server認証)
conStr = "Provider=" & PROVIDER & ";" & _
"Data Source=" & SERVER_NAME & ";" & _
"Initial Catalog=" & DB_NAME & ";" & _
"User ID=" & USER_NAME & ";" & _
"Password=" & PASSWORD & ";"
On Error GoTo Err
'DB接続
Set con = CreateObject("ADODB.Connection")
con.Open conStr
'SELECT文を発行
Set rs = con.Execute(sql)
'結果(取得したレコード)をシートに貼付け
ws.Range("B2").CopyFromRecordset rs
'接続を閉じる
rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
Exit Sub
Err:
MsgBox ("エラーが発生しました。" & vbCrLf & vbCrLf & _
Err.Description & vbCrLf), vbCritical
If Not rs Is Nothing Then
rs.Close
End If
'DB接続していたら閉じる
If con.State = 1 Then
con.Close
End If
Set rs = Nothing
Set con = Nothing
End Sub
実行結果
SQL ServerへSELECT文を実行できました。
参考①
SQL ServerへINSERT文の実行もできます。
詳細は以下の記事をご確認ください。
参考②
上記で使用した以下の詳細は、公式サイトをご確認ください。
●「Connectionオブジェクト」の「Open」メソッド
●「Connectionオブジェクト」の「Execute」メソッド
●「Rangeオブジェクト」の「CopyFromRecordset」メソッド