VBA サーバー接続 SQL実行

未分類

VBAでサーバーに接続してSQLを実行するには、ADO(ActiveX Data Objects)を使ってデータベースへ接続し、SQLを発行します。SQL Server や MySQL、Oracle などに接続できますが、ここでは代表的な SQL Server を例にして説明します。


✅ 前提:参照設定を追加

VBAエディタで以下の設定をしてください:

  1. 「ツール」>「参照設定」
  2. 「Microsoft ActiveX Data Objects x.x Library」にチェック(例:6.1)

✅ 基本構文:SQL Server に接続して SELECT を実行する

Sub SQLServerに接続してSELECT実行()

Dim conn As Object
Dim rs As Object
Dim sql As String

' 接続情報を設定
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=サーバー名;Initial Catalog=データベース名;" & _
"User ID=ユーザー名;Password=パスワード;"

' 実行するSQL
sql = "SELECT TOP 10 * FROM テーブル名"

' レコードセット取得
Set rs = conn.Execute(sql)

' 結果をExcelシートに出力
Dim i As Long, j As Long
i = 1
Do Until rs.EOF
For j = 1 To rs.Fields.Count
Cells(i, j).Value = rs.Fields(j - 1).Value
Next j
i = i + 1
rs.MoveNext
Loop

' 後始末
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing

MsgBox "完了!"

End Sub

✅ 接続文字列(Connection String)の例

データベースConnection String(例)
SQL Server(認証あり)Provider=SQLOLEDB;Data Source=サーバー名;Initial Catalog=DB名;User ID=ユーザー;Password=パス;
SQL Server(Windows認証)Provider=SQLOLEDB;Data Source=サーバー名;Initial Catalog=DB名;Integrated Security=SSPI;
MySQL(ODBC経由)Driver={MySQL ODBC 8.0 Unicode Driver};Server=ホスト名;Database=DB名;User=ユーザー;Password=パス;Option=3;

✅ INSERT / UPDATE / DELETE などのSQLを実行する

Sub SQLServerに接続してINSERT()

Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=サーバー名;Initial Catalog=データベース名;" & _
"User ID=ユーザー名;Password=パスワード;"

Dim sql As String
sql = "INSERT INTO テーブル名 (列1, 列2) VALUES ('値1', '値2')"

conn.Execute sql

conn.Close
Set conn = Nothing

MsgBox "INSERT 完了!"

End Sub

✅ エラーハンドリング付き(推奨)

On Error GoTo ErrorHandler

' 処理...

Exit Sub

ErrorHandler:
MsgBox "エラー発生: " & Err.Description
If Not rs Is Nothing Then If rs.State = 1 Then rs.Close
If Not conn Is Nothing Then If conn.State = 1 Then conn.Close

✅ よくある接続トラブル

原因対処方法
サーバー名が不正SSMSなどで接続情報を確認
ポートがブロックされているファイアウォールやVPNを確認
ドライバが未インストールSQL Server Native Client や ODBC ドライバをインストール

🎯 まとめ

  • ADOを使えば、VBAからSQL Serverなどに接続してSQLを実行可能
  • SELECTの結果はシートへ出力も可能
  • INSERT/UPDATE/DELETEにも対応
タイトルとURLをコピーしました