非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Excel/VBAでSQL Serverにアクセスする方法

   

ExcelVBAからSQL Serverに接続する方法についてです。

前回までの記事のリンク貼っておきます。すでにここまで出来ているものとします。

こちらがあらかじめ作成しておいたデータベースです。データベース名は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
 

 

実行すると以下のようにデータベースの内容をシートに展開できました。

スポンサーリンク

 - Excel, SQL Server, VBA