【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
関連記事
-
-
【Access】循環参照エラーの回避方法
Accessでクエリを実行しようとすると クエリ定義の SELECT で指定されている別名
-
-
【Access】クエリ実行時に「引数が違います」と表示され実行できないときの対処法
Accessのクエリを実行すると 引数が違います とポップアップが表示され、クエリが実行できない
-
-
【SQL Server 2012 Express】Windows Server 2012にインストールしてみる
Windows Server 2012にSQL Server 2012をインストールしてみる。 以
-
-
【Access】エラーポップアップ。「少数を丸めたために、データが切り捨てられました。」
Accessのリンクテーブルでデータを確認していたら、急に・・・ 「少数を丸めたために
-
-
【Excel】関数を一括でメモ帳などにコピーする方法
セルに入力されている関数一つのみコピーしたい場合、対象セルを選択して、数式バーか
-
-
【レプリケーション】SQL Server 2012 Expressでレプリケーション
Windows Server 2012のSQL Server 2012 Expressを二台用意して
-
-
【SQL Server】Management Studioを使ったトランザクションログファイルの圧縮
「ファイルが書き出せない」と問い合わせを受け、DBサーバーのマイコンピュータ確認したら、Dドライブ(
-
-
【SQL Server】varchar型、nvarchar型の文字数とバイト(byte)数を取得する
varchar型の文字数、バイト(byte)数を取得する方法 SELECT LEN(【文字
-
-
【ODBC】Windows7でAccess2007とSQL Serverを接続する為のODBCの作成
前回、ODBC接続の為のサーバー側の設定を行いましたので、 今回はAccess2007側のWind
-
-
【SQL Server】バックアップ取得日を確認する方法
前回の記事で、SQL Serverのデータベースのリストアした日付を確認するSQLを作りましたが、今