【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 2012】Management Studioを使ったバックアップで面白い機能。
Management Studioを使ったバックアップをかれこれ3年くらいやってるんですが、一つのバ
-
-
【SQL Server】バックアップ取得日を確認する方法
前回の記事で、SQL Serverのデータベースのリストアした日付を確認するSQLを作りましたが、今
-
-
【Outlook】文字化けを直す方法
メールをチェックしているとプレビューウインドに文字化け表示。 メール(Outlook)
-
-
【Outlook】Gmailを使う時の設定(Gmailアカウント側)
OutlookでGmailを使用するには、Gmailのアカウント側でいくつか設定をしなければいけない
-
-
【Outlook】保存フォルダ(archive.pst)が開けない。
急に「保存フォルダ」が開けなくなった。 Outlookのバージョンは、2007のSP3。
-
-
【SQL Server 2012】SQLでエクセルをテーブルとして表示させる方法
SQL Management Studioを使用してインポート等は使用せずにSQLのみでテーブルを表
-
-
【SQL Server 2012】Management Studioでサンプルデータベース(mdfファイル)をアタッチ
以前、Windows Server 2012にMicrosoftR SQL ServerR 2012
-
-
【Excel】複数のエクセル(ブック)のシートを一つのブックに結合するVBA
複数のエクセルのシートを一つのエクセルにまとめるVBAを作ってみた。 ソースコードは使い方の下
-
-
【SQL Server】varchar型、nvarchar型の文字数とバイト(byte)数を取得する
varchar型の文字数、バイト(byte)数を取得する方法 SELECT LEN(【文字
-
-
【Excel】グラフ(オブジェクト)の名前変更方法
Excel2013でのお話。 とりあえず、僕が探したところ三つありました。 【1つ目】名前ボ

