Excel/VBAでSQL Serverにアクセスする方法
ExcelVBAからSQL Serverに接続する方法についてです。
前回までの記事のリンク貼っておきます。すでにここまで出来ているものとします。
- Windows11にSQL Server 2019 Expressをインストールしたのでメモ
- SQL Server Management Studio(SSMS)でテーブルを作成する
- SQL Server Management Studio(SSMS)でユーザーを登録する
こちらがあらかじめ作成しておいたデータベースです。データベース名はbookmarks、テーブル名はbookmarkとなります。今回ぼ例ではこれにVBAでアクセスします。
SQL Server Management Studioにユーザー権限でログインする時の画面です。こちらでメモしておくことはサーバー名(WIN11\SQLEXPRESS)です。あとはログイン名とパスワードは把握しておきましょう。(把握できているからこそログインできているのですが)
最後にSQL Serverに接続するためのソースコードを貼っておきますが、最初の接続コマンドは以下を示しており各自の情報に修正する必要があります。
| コマンド | 意味 | 例 |
|---|---|---|
| Provider | 接続先となるプロバイダ名 | SQLOLEDB |
| Data Source | サーバー名 | WIN11\SQLEXPRESS |
| Initial Catalog | データベース名 | bookmarks |
| User ID | ログインID | user01 |
| Password | パスワード | **** |
Sub ConnectToSQLServer()
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=SQLOLEDB;" & _
"Data Source=WIN11\SQLEXPRESS;" & _
"Initial Catalog=bookmarks;" & _
"User ID=user01;" & _
"Password=****;"
cn.Open
Dim rs As New ADODB.Recordset
rs.Open "SELECT * FROM bookmark", cn
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
'カラム名をワークシート1行目に書き込む
Dim i As Long, j As Long
i = 1
For j = 1 To rs.Fields.Count
ws.Cells(i, j) = rs(j - 1).Name
Next j
'レコードをワークシートに書き込む
Do Until rs.EOF
i = i + 1
For j = 1 To rs.Fields.Count
ws.Cells(i, j) = rs(rs(j - 1).Name)
Next j
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
実行すると以下のようにデータベースの内容をシートに展開できました。
スポンサーリンク


