【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得
公開日:
:
最終更新日:2016/08/15
Microsoft Office, データベース Excel, SELECT, SQL, SQL Server, VBA, エクセル, テーブル, レコードセット
前回は、テーブルのレコードをVBAで直接更新(Insert/update/delete)
今回は、Select文を発行し、VBA上のレコードセットへデータ取得し、エクセルへ出力
※レコードセットを更新し、テーブルを一括更新(UpdateBatch)する場合はこちら
実行前の準備
ツール/参照設定の「Microsoft ActiveX Data Objects 6.1 Library」にチェックする
※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】Management Studioでテーブルをデザインから変更するとエラーになる
変更の保存が許可されていません。行った変更には、次のテーブルを削除して再作成することが必要に
-
-
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新
前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し 前回はVBAから更新S
-
-
【SQL Server】バックアップ取得日を確認する方法
前回の記事で、SQL Serverのデータベースのリストアした日付を確認するSQLを作りましたが、今
-
-
【Outlook】同期の失敗フォルダを消す方法
問い合わせで、Outlookの「同期の失敗」フォルダを消したいと受けた。 調べてみたけど、基本
-
-
【Access】クエリで小数点の切り下げ、切り上げ
Access2007には、roundup、rounddown関数がない。 なので、純粋に関数だ
-
-
【SQL Server】Management Studioを使ったトランザクションログファイルの圧縮
「ファイルが書き出せない」と問い合わせを受け、DBサーバーのマイコンピュータ確認したら、Dドライブ(
-
-
【Access】「更新可能なクエリであることが必要です」のクエリのエラーポップアップ
Accessでクエリを作成し、実行すると 「更新可能なクエリであることが必要です。」
-
-
【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか
-
-
【SQLServer2012】バックアップ/リストア方法 リストア編
SQL Server 2012のデータベースをManagement Studioを使用して、リストア
-
-
【Access】クエリ実行時に「引数が違います」と表示され実行できないときの対処法
Accessのクエリを実行すると 引数が違います とポップアップが表示され、クエリが実行できない

