Excel VBA SQLServerに接続してselectするサンプル

Excel VBAのSQLServerに接続してselectするサンプルです。

目次

設定 参照の設定
コード 接続してselectを実行する

参照の設定

参照の設定を行います。

1.「ツール」→「参照設定」をクリックします。

 

2.参照可能なライブラリで「Microsoft ActiveX Data Objects 2.8 Library」にチェックをいれOKを押します。

チェックをしないで実行するとADODB.Connectionの行で
「ユーザ定義型は定義されていません。」のコンパイルエラーが表示されます。

 

接続してselectを実行する

SQLServerに接続してselectを実行するサンプルです。

Sub test1()
    Dim SQL As String
    Dim i As Long
    Dim row As Long

    Const pv = "SQLOLEDB"             'Provider
    Const ds = "localhost\SQLEXPRESS" 'Data Source
    Const db = "testDB1"              'DB
    Const sec = "SSPI"                'Windows認証

    SQL = "Select * from employee;"
    
    Dim conn As New ADODB.Connection
    conn.ConnectionString = _
                    "Provider=" & pv & ";" & _
                    "Data Source=" & ds & ";" & _
                    "Initial Catalog=" & db & ";" & _
                    "Integrated Security=" & sec & ";"

    conn.Open
    
    Dim rs As New ADODB.Recordset
    rs.Source = SQL
    rs.ActiveConnection = conn
    rs.Open
    
    With Worksheets("Sheet1")
        .Cells.Clear
        
        '列名の表示
        For i = 0 To rs.Fields.Count - 1
            .Cells(1, i + 1) = rs(i).Name
        Next i

        '値の表示
        row = 1
        Do Until rs.EOF
            For i = 0 To rs.Fields.Count - 1
                .Cells(row + 1, i + 1) = rs(i).Value
            Next i
            rs.MoveNext
            row = row + 1
        Loop
    End With
    
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

7行目は、Data Sourceです。
8行目は、データベース名です。
9行目は、Windows認証です。
11行目は、実行するSQLです。
27行目は、取得した値をsheet1に出力します。
33行目は、列名を出力します。
40行目からは、取得した値分ループで出力します。

実行結果

以下のように表示されます。

1行目は、DBの列名です。
2行目以降は、値です。

関連の記事

VBA For文の使い方(処理を繰り返す)
VBA Do Loop文の使い方(処理を繰り返す)

△上に戻る