DB接続パーツ
いずれれかのシートに接続情報を記載し、「★要変更」の部分で指定するようにしてください。

VBA
Option Explicit
'################################################################
'##
'## DB接続パーツ
'##
'################################################################
Public db As ADODB.Connection 'DBコネクション保持
'/////////////////////////////////////////////////////////
'//
Public Sub CheckDbConnection()
'//
'/////////////////////////////////////////////////////////
Dim ret As Integer
ret = DBOpen()
If ret = 0 Then
MsgBox "正常に接続できました", vbOKOnly + vbInformation, "成功"
Call DBClose
Else
'DBOpenでエラーメッセージを出力しているため、ここでは何もしない
End If
End Sub
'/////////////////////////////////////////////////////////
'//'DBのコネクションオープン
Public Function DBOpen() As Integer
'//
'// 戻値:終了コード 0:正常終了
'//
'/////////////////////////////////////////////////////////
Dim OpenFlag As Boolean
OpenFlag = False
If db Is Nothing Then
'オブジェクトがNothingの場合、オブジェクト生成する
Set db = New ADODB.Connection
db.CursorLocation = adUseClient
OpenFlag = True
Else
'オブジェクトがNothingでない場合で、コネクション状態が閉じている場合
If db.State = adStateClosed Then
OpenFlag = True
End If
End If
'OpenFlagがオンの場合
If OpenFlag = True Then
'Connection Stringの生成
Dim st As String
Dim m_ServerName As String
Dim m_DatabaseName As String
Dim m_UserID As String
Dim m_Password As String
'★要変更
m_ServerName = Sheets("0-1").Cells(5, 34).Value
m_DatabaseName = Sheets("0-1").Cells(6, 34).Value
m_UserID = Sheets("0-1").Cells(7, 34).Value
m_Password = Sheets("0-1").Cells(8, 34).Value
st = "Provider=SQLOLEDB;Data Source=" & m_ServerName & ";Initial Catalog=" & m_DatabaseName & ";" & _
"User Id=" & m_UserID & ";Password=" & m_Password & ";"
'DBオープン
On Error GoTo ErrHandler1
db.Open st
On Error GoTo 0
End If
DBOpen = 0
Exit Function
ErrHandler1:
MsgBox "データベース接続でエラーが発生しました。設定を確認してください。", vbOKOnly + vbExclamation
DBOpen = 99
Exit Function
End Function
'/////////////////////////////////////////////////////////
'//'DBのコネクションクローズ
Public Function DBClose()
'//
'/////////////////////////////////////////////////////////
'オブジェクトがNothingでない場合
If Not db Is Nothing Then
'DBクローズ
db.Close
Set db = Nothing
End If
End FunctionSELECT文実行
VBA
'/////////////////////////////////////////////////////////
'//
Public Sub SQLServer_SELECT実行()
'//
'/////////////////////////////////////////////////////////
'変数設定
Dim ret as Integer
Dim rs As ADODB.Recordset
Dim strSQL As String
Dim DeleteStartRow As Integer
Dim DeleteEndRow As Integer
strSQL = "SQL文"
StartRow = 3
EndRow = Cells(Rows.Count, 1).End(xlUp).Row
'DBOpen
ret = DBOpen()
If ret <> 0 Then
'DBオープンエラー。エラーメッセージはDBOpen内で出力しているため、ここでは何もせずにExitする
Exit Sub
End If
'初期化
Range(Rows(StartRow), Rows(EndRow)).Clear
'データ取得・貼り付け
Set rs = New ADODB.Recordset
rs.Open strSQL, db, adOpenStatic, adLockReadOnly
If Not (rs.EOF) Then
Cells(StartRow, 1).CopyFromRecordset rs
End If
'DBClose
Call DBClose
ErrHandler1:
Call DBClose
MsgBox "SQL結果がありません。SQL文を見直してください。"
Exit Sub
End SubUPDATE/INSERT
VBA
'/////////////////////////////////////////////////////////
'//
Public Sub SQLServer_SELECT実行()
'//
'/////////////////////////////////////////////////////////
'変数設定
Dim ret as Integer
Dim rs As ADODB.Recordset
Dim strSQL As String
strSQL = "SQL文"
'DBOpen
ret = DBOpen()
If ret <> 0 Then
'DBオープンエラー。エラーメッセージはDBOpen内で出力しているため、ここでは何もせずにExitする
Exit Sub
End If
'データ更新
Set rs = New ADODB.Recordset
rs.Open strSQL, db, adOpenStatic, adLockReadOnly
rs.Execute strSQL
'DBClose
Call DBClose
ErrHandler1:
Call DBClose
MsgBox "更新に失敗しました。SQL文を見直してください。"
Exit Sub
End Sub