*

【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

公開日: : 最終更新日:2016/08/15 Microsoft Office, データベース , , , , , , ,

前回は、テーブルのレコードをVBAで直接更新(Insert/update/delete)

今回は、Select文を発行し、VBA上のレコードセットへデータ取得し、エクセルへ出力

※レコードセットを更新し、テーブルを一括更新(UpdateBatch)する場合はこちら

実行前の準備

ツール/参照設定の「Microsoft ActiveX Data Objects 6.1 Library」にチェックする

参照設定 - VBAProject

※6.1じゃなくてもOK。2.0、2.1、6.0で動作することは確認済み

顧客住所テーブルからレコードを取得し、
エクセルへ書き出すサンプル

Option Explicit
Sub SQL_GetRecordSet()
' #######################################################################
'
' SQL ServerにSELECT文を発行し、レコードセットへ取得し、Excelに書き出す。
'
' #######################################################################

    On Error GoTo ErrorProc

    Dim DBSrv As String
    Dim DBName As String
    Dim strSQL As String
    Dim rs As Recordset
    Dim strConn As String

    '----------------------------------------------------
    ' DBSrvにDBサーバ名、DBNameにデータベース名
    '----------------------------------------------------
    DBSrv = "DBSERVER\SQLEXPRESS"
    'DBSrv = "DBSERVER\SQLEXPRESS,49391" 'ポート指定付
    DBName = "db_Sales"


    '----------------------------------------------------
    ' 発効するSQLの作成(レコードセットへ取り込むSELECT文)
    '----------------------------------------------------
    strSQL = "SELECT * FROM [Customer].[顧客住所] WHERE 都道府県名 = '東京都'"
    

    '----------------------------------------------------
    ' 接続文字列の指定
    '----------------------------------------------------
    'Windows認証
    strConn = "Provider=SQLOLEDB;Data Source='" & DBSrv & "';Initial Catalog='" & DBName & "';Trusted_Connection=Yes"
    'SQL Server認証
    'strConn = "Provider=SQLOLEDB;Data Source='" & DBSrv & "';Initial Catalog='" & DBName & "';UID=【ユーザ名】;PWD=【パスワード】;"

    'オブジェクト生成
    Set rs = New ADODB.Recordset
    'SQLを実行し、読み取り専用でレコードセットへ取得
    rs.Open strSQL, strConn, adOpenForwardOnly, adLockReadOnly, adCmdText
 
    'レコードセットへ先頭へ
    rs.MoveFirst

    'Excelに書き出し
    Range("A1").CopyFromRecordset rs

    'クローズ
    rs.Close
    Set rs = Nothing

    Exit Sub

'エラー処理
ErrorProc:

    MsgBox Err.Number & vbCrLf & Err.Description

End Sub

検証環境
Excel 2007 or Excel 2013
SQL Server 2012

Adsense

関連記事

データベース

【SQL Server 2012】Management Studioを使ったバックアップで面白い機能。

Management Studioを使ったバックアップをかれこれ3年くらいやってるんですが、一つのバ

記事を読む

データベース

【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法

力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか

記事を読む

Microsoft Office

【Outlook】保存フォルダ(archive.pst)が開けない。

急に「保存フォルダ」が開けなくなった。 Outlookのバージョンは、2007のSP3。

記事を読む

Microsoft Office

【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法

パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完璧主義のこだわり派には非常にイ

記事を読む

データベース

【Management Studio】データベースの定義を取得する方法

あくまでデータベース定義の取得です。 ※データベースのデータを取得する方法ではありません。

記事を読む

Microsoft Office

【Excel】エクセル。シートの名前を変更しようとしたらエラーポップアップ

エクセルでシート名を変更しようとしたときに… シートの名前をほかのシート、Visual B

記事を読む

Microsoft Office

【Access】「更新可能なクエリであることが必要です」のクエリのエラーポップアップ

Accessでクエリを作成し、実行すると 「更新可能なクエリであることが必要です。」

記事を読む

データベース

【SQL Server 2012】バッチ(コマンドプロンプト)でバックアップ

バッチ(コマンドプロンプト)を使って、SQL Server 2012のバックアップを取得します。

記事を読む

Microsoft Office

【Excel】複数のエクセル(ブック)のシートを一つのブックに結合するVBA

複数のエクセルのシートを一つのエクセルにまとめるVBAを作ってみた。 ソースコードは使い方の下

記事を読む

データベース

【Management Studio】Microsoft SQL Server 2012 ExpressにManagement Studio のインストール方法。

前回、Windows Server 2012にSQL Server 2012 Expressをインス

記事を読む

Adsense

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Microsoft Office
【Access】削除クエリの「指定されたテーブルから削除できませんでした。」の対処法

削除クエリで「指定されたテーブルから削除できませんでした。」と ポッ

Microsoft Office
【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法

パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完

データベース
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新

前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し

application
【Visual Studio】デバック、ブレークポイントで止まらない。

Visual Studio 2015でVB.netのプログラムをデバッ

データベース
【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

前回は、テーブルのレコードをVBAで直接更新(Insert/updat

→もっと見る

PAGE TOP ↑