プロが教えるわが家の防犯対策術!

バッチ処理で、bcpを使ってSQLの実行を行っています。この実行結果(データ抽出)をエクセルに保存させることは出来ませんでしょうか。
ネットでエクセルに保存させる方法がないかいろいろ探してみましたが、探し方が悪いのか方法を探し出すことが出来ませんでした。

最終的には、毎日エクセルファイルにデータを吐き出すことが出来るようにしたいです。

A 回答 (3件)

bcpにこだわらなくてもいいのではないでしょうか。


vbscriptを使って

Option Explicit

Dim cn
Dim rs
Dim exl
Dim Book
Set exl = CreateObject("Excel.Application")
exl.visible = True
if exl is nothing then
msgbox("excel 起動エラー")
WScript.Quit 1
else
exl.Workbooks.Open "C:\users\xxx\book1.xls"
end if

'ADOオブジェクトを作成します
Set cn = CreateObject("ADODB.Connection")

cn.Open "Driver={SQL Server};server=(local);database=pubs;user id=xx;password=xx;"
if cn is nothing then
msgbox("SQL Server 接続エラー")
exl.quit
set exl = Nothing
WScript.Quit 1
end if

set rs = cn.execute("select ~")
exl.sheets("Sheet1").cells(1,1).copyfromrecordset rs
exl.Workbooks("db1.xls").Save
exl.quit
Set exl = Nothing
rs.close
cn.Close

Set rs = Nothing
Set cn = Nothing

という内容のファイル(仮にado.vbs)を作成して
Cscript /nologo ado.vbs
というコマンドを実行すればどうでしょう。
    • good
    • 0
この回答へのお礼

最終的にエクセルの形式で保存できればいいので、bcpにこだわる必要はないです。
vbscriptでできるんですね、ありがとうございます、さっそく実施させていただきます!

お礼日時:2011/01/18 09:45

すみません


> exl.Workbooks("db1.xls").Save
はexl.Workbooks("book1.xls").Save
の誤りです。
    • good
    • 0

出力ファイルの拡張子をcsvにすれば


よいのでは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
そうですよね、CSVでいいじゃんって思いますよね、
相手側からの要望でエクセルで抽出する必要があるため、
CSVはダメと言われてしまいました。

お礼日時:2011/01/18 09:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す