SQLの窓

2014年04月03日


VBScript : Micrsoft Access 経由で、SQLServer のテーブルのデータを Excel にエクスポートする方法

SQLServer は、SQLExpress を使用しています。古い環境からの移行なので、sa のパスワードは空になっています。

エクスポートする為に、Microsoft Access の select into 〜 from 〜 を使用し、SQLServer への接続は、動的に SQL 内で接続文字を作成して使用しています。SQLServer への接続部分は、『mypc\sqlexpress,1433』で、ポートが必要で、サーバー側の設定も必要です。別名を使う方法もありますが、SQLServer 構成用のソフトウェアをインストールしていないクライアントでは、レジストリに登録する必要があるので、この方法(mypc\sqlexpress,1433)が良いと思います。

Office 2003 までで動作する互換処理
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Set Cn = CreateObject( "ADODB.Connection" )
Set Adox = CreateObject( "ADOX.Catalog" )
Set Shell = CreateObject( "Shell.Application" )

SelectDir = "C:\user\lightbox\vbs"

' Excel 削除
on error resume next
Fso.DeleteFile(SelectDir & "\エクスポート.xls")
on error goto 0

' ユーザーフォルダ( C:\Users\ユーザ名 )
Set objFolder = Shell.Namespace(&H28)
Set objFolderItem = objFolder.Self

' XP の場合の為、( Windows7 でもシステムが対応してくれます )
strPath = objFolderItem.Path & "\Local Settings\Temp\dummy.mdb"

' 一時 Microsoft Access の削除
on error resume next
Fso.DeleteFile(strPath)
on error goto 0

' 接続文字列
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";"

' 一時 Microsoft Access 作成
Adox.Create ConnectionString

' 作成した Microsoft Access に接続
Cn.Open ConnectionString

' V_EXCELOUT は、SQLExpress のビュー

Query = "select * "
Query = Query & "into [Excel 8.0;DATABASE=" & SelectDir & "\エクスポート.xls].[社員データ] "
Query = Query & " from [ODBC;Driver={SQL Server};SERVER=mypc\sqlexpress,1433;Database=mydb;UID=sa;PWD=].[V_EXCELOUT]"
Query = Query & "  WHERE 年度 = '2013' and コード = '0001'"
Query = Query & "  ORDER BY V_EXCELOUT.ふりがな"

Cn.Execute Query
Call Cn.Close()

MsgBox("処理が終了しました")


ここでの環境は Office 2007 です
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Set Cn = CreateObject( "ADODB.Connection" )
Set Adox = CreateObject( "ADOX.Catalog" )
Set Shell = CreateObject( "Shell.Application" )

SelectDir = "C:\user\lightbox\vbs"

' Excel 削除
on error resume next
Fso.DeleteFile(SelectDir & "\エクスポート.xlsx")
on error goto 0

' ユーザーフォルダ( C:\Users\ユーザ名 )
Set objFolder = Shell.Namespace(&H28)
Set objFolderItem = objFolder.Self

' XP の場合の為、( Windows7 でもシステムが対応してくれます )
strPath = objFolderItem.Path & "\Local Settings\Temp\dummy.accdb"

' 一時 Microsoft Access の削除
on error resume next
Fso.DeleteFile(strPath)
on error goto 0

' 接続文字列
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & strPath & ";"

' 一時 Microsoft Access 作成
Adox.Create ConnectionString

' 作成した Microsoft Access に接続
Cn.Open ConnectionString

' V_EXCELOUT は、SQLExpress のビュー

Query = "select * "
Query = Query & "into [Excel 12.0 Xml;DATABASE=" & SelectDir & "\エクスポート.xlsx].[社員データ] "
Query = Query & " from [ODBC;Driver={SQL Server};SERVER=mypc\sqlexpress,1433;Database=mydb;UID=sa;PWD=].[V_EXCELOUT]"
Query = Query & "  WHERE 年度 = '2013' and コード = '0001'"
Query = Query & "  ORDER BY V_EXCELOUT.ふりがな"

Cn.Execute Query
Call Cn.Close()

MsgBox("処理が終了しました")


関連する記事

posted by lightbox at 2014-04-03 15:39 | VBS + ADO | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり