【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】アンインストール手順
手順としては、http://technet.microsoft.com/ja-jp/library/
-
-
【Management Studio】データベースの定義を取得する方法
あくまでデータベース定義の取得です。 ※データベースのデータを取得する方法ではありません。
-
-
【Access】クエリ実行時に「引数が違います」と表示され実行できないときの対処法
Accessのクエリを実行すると 引数が違います とポップアップが表示され、クエリが実行できない
-
-
【SQL Server 2012】SQLでエクセル表示の実行エラーの対処法
SQLでエクセル表示を実行した時にエラーとなった場合の対処法。 実はSQLでエクセルファイルを表示
-
-
【SQL Server 2012】バッチ(コマンドプロンプト)でバックアップ
バッチ(コマンドプロンプト)を使って、SQL Server 2012のバックアップを取得します。
-
-
【Outlook】送信時の0x80040201エラーの対処
発生した環境 OSはWindows7。Outlookは2013。イーモバイルのPocket W
-
-
【Outlook】プレビューウインドウ(閲覧ウインドウ)で表示したら、メール既読のオフ設定
前回、「Outlookの開封メッセージ送信を先送りにする方法」で、少し書きましたが、 私用のメ
-
-
【拡張子:accde】Access2007でaccdeの使い道と作成方法
うちの職場ではEUC(End User Computing)として Access2007 を多用して
-
-
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新
前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し 前回はVBAから更新S
-
-
【Excel】複数のエクセル(ブック)のシートを一つのブックに結合するVBA
複数のエクセルのシートを一つのエクセルにまとめるVBAを作ってみた。 ソースコードは使い方の下