SQLServerに接続して、SQLを実行し、その結果を取得するまでのサンプルコードです。
Option Explicit
Call Main()
Sub Main()
Dim objCon
Dim query
Dim objRS
Dim srvName, dbName, loginName, loginPass
'データベース接続情報を定義します。'
srvName = "DBサーバ名"
dbName = "DB名"
loginName = "DBユーザ名"
loginPass = "DBパスワード"
'SQLServerへ接続します。***************************************************************************************************
On Error Resume Next
Set objCon = CreateObject("ADODB.Connection")
objCon.Open "Driver={SQL Server}; server=" & srvName & "; database=" & dbName & "; uid=" & loginName & "; pwd=" & loginPass & ";"
'エラー処理'
If Err.Number <> 0 Then
Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description)
Set objCon = Nothing
Exit Sub
End If
Err.Clear
On Error Goto 0
'SQLを実行してレコードセットに格納します。*********************************************************************************
query = ""
query = query & "SELECT "
query = query & " カラム1 "
query = query & " ,カラム2 "
query = query & " ,カラム3 "
query = query & "FROM テーブル名 "
query = query & "WHERE "
query = query & " カラム1 = xx"
On Error Resume Next
'定義したSQLを実行してレコードセットに格納します。'
Set objRS = objCon.Execute(query)
'エラー処理'
If Err.Number <> 0 Then
Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description)
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
Exit Sub
End If
Err.Clear
On Error Goto 0
'レコードセットのデータを表示します。***************************************************************************************
On Error Resume Next
'レコードセットのデータ件数が0件の場合は処理を終了します。
If objRS.EOF Then
Msgbox("対象データが存在しない為、処理を終了します。")
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
Exit Sub
End If
'レコードセットの行数分ループします。
Do Until objRS.EOF
Msgbox("カラム1の値:" & objRS("カラム1").Value & " カラム2の値:" & objRS("カラム2").Value & " カラム3の値:" & objRS("カラム3").Value)
'次のレコードセットに移動します。
objRS.MoveNext
Loop
'エラー処理'
If Err.Number <> 0 Then
Msgbox("エラーが発生しました。 " & " エラーナンバー:" & Err.Number & " エラー詳細:" & Err.Description)
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
Exit Sub
End If
Err.Clear
On Error Goto 0
'終了処理をします。。*******************************************************************************************************
'オブジェクトを破棄します。
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
End SubこのコードではSQLServerとの接続にDSNは使用していないので、実行環境のPCやサーバにDSNが登録されていなくても動作します。
データベース情報、SQL文、ループ時の処理、エラー処理は都度適切な内容に書き換えて下さい。
当ブログ管理人が社内SEの業務でデータベース処理関連のバッチを作る際に上記コードをひな形としてよく使っています。
SELECT結果をCSVに書いたり、エラー時にメールで飛ばしたりSELECTではなく更新系のSQLを実行したりして業務を自動化しています。
参考になれば幸いです。
※SQLServer 関連記事はこちら↓

【VBScript】SQLServerに接続してSQL(UPDATE)を実行
SQLServerに接続し、UPDATE文のSQLを実行するサンプルコードです。
Option Explicit
...

【VBScript】SQLServerに接続してSQL(SELECT)を実行しCSVに出力
以前に以下のサンプルコードを紹介しましたが、
【VBScript】SQLServerに接続してSQL(SELECT...

