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
実行すると以下のようにデータベースの内容をシートに展開できました。
スポンサーリンク