【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
関連記事
-
-
【Excel】「メモリまたはディスクの空き容量が~」のポップアップで開けない時の対処法
メモリまたはディスクの空き容量が不足しているため、ドキュメントを開いたり、保存したりできません。
-
-
【Access】エラーポップアップ。「少数を丸めたために、データが切り捨てられました。」
Accessのリンクテーブルでデータを確認していたら、急に・・・ 「少数を丸めたために
-
-
【SQL Server】Excel VBAでSQLを実行し、レコードを更新(追加、更新、削除)する
VBAでSQL Serverのテーブルに SQL(Insert、Update、Delete)を発行
-
-
【SQL Server】varchar型、nvarchar型の文字数とバイト(byte)数を取得する
varchar型の文字数、バイト(byte)数を取得する方法 SELECT LEN(【文字
-
-
【SQL Server 2012】SQLでエクセルをテーブルとして表示させる方法
SQL Management Studioを使用してインポート等は使用せずにSQLのみでテーブルを表
-
-
【Management Studio】Microsoft SQL Server 2012 ExpressにManagement Studio のインストール方法。
前回、Windows Server 2012にSQL Server 2012 Expressをインス
-
-
【コマンドプロンプト】cmdでSQLの結果を変数に取得する方法
力技の取得方法をご紹介。というかメモ。 題名には偉そうに書きましたが…なかなか良い方法が見つか
-
-
【Office】Access2007のピボットテーブルとExcel連携
仕事でAccess2007でEXCELみたいにピボットテーブルを使えますか? と質問を頂いた。
-
-
【Access】削除クエリの「指定されたテーブルから削除できませんでした。」の対処法
削除クエリで「指定されたテーブルから削除できませんでした。」と ポップアップが表示され、クエリが実
-
-
【Outlook】文字化けを直す方法
メールをチェックしているとプレビューウインドに文字化け表示。 メール(Outlook)

