0

Excel のマクロとその使用方法について質問があります。最近、複数の TFS データベースにアクセスしてデータを抽出する SQL クエリを作成しました。スクリプトの出力が個々の列ヘッダーとともに Excel で自動的に公開されるように、このスクリプトを Excel から実行したいと思います。以前、VB マクロを使用して Excel でこれを行ったことがあります。

回避策として、sqlcmd を実行するための小さなバッチ ファイルを作成し、スクリプトを含む sql ファイルをチェックして、最後に出力を csv ファイルにプッシュしました。これに関する唯一の問題は、CSV の出力が結果を 1 行にプッシュし、ヘッダーで区切らないことです。

バットファイルの現在のコード:

sqlcmd -E -S TFSServer\TFS2010 -i C:\test\testquery.sql -o C:\test\test.csv

4

1 に答える 1

1

データ抽出にssisパッケージまたはssrsレポートを使用してみませんか?マクロはそうです...前世紀。

マクロの使用を主張する場合は、次の例を参照してください。

Dim con As ADODB.Connection, _
cmd As ADODB.Command, _
rs As ADODB.Recordset, _
strSQL As String, _
i As Integer

strSQL = "EXEC SP_StoredProcedureToGetData"

Set con = New ADODB.Connection
con.Open "Provider=SQLOLEDB;Data Source=SQLSERVER;" & _
    "Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD"

Set cmd = New ADODB.Command
With cmd
    .ActiveConnection = con
    .CommandText = strSQL
    .CommandType = adCmdStoredProc
End With

Set rs = New ADODB.Recordset
With rs
    .CursorLocation = adUseClient
    .CursorType = adOpenKeyset
    .LockType = adLockBatchOptimistic
End With
Set rs = cmd.Execute

Cells(1, 1) = "Column1"
Cells(1, 2) = "Column2"
Cells(1, 3) = "Column3"
Cells(1, 4) = "Column4"
Cells(1, 5) = "Column5"
Cells(2, 1).CopyFromRecordset rs

Set con = Nothing
Set cmd = Nothing
Set rs = Nothing
于 2012-07-25T15:18:52.653 に答える