0

我对 Excel 中的宏以及如何使用它们有疑问。我最近创建了一个 SQL 查询,它将访问多个 TFS 数据库以提取数据。我只是想从 excel 运行这个脚本,这样脚本的输出就会自动在 excel 中发布,并带有各个列标题。我以前在 excel 中通过使用 VB 宏看到过此操作。

作为一种解决方法,我创建了一个小 bat 文件来运行 sqlcmd,检查包含脚本的 sql 文件,最后将输出推送到 csv 文件。唯一的问题是 CSV 的输出将结果推送到单行中,并且没有将它们与标题分开。

batfile 的当前代码:

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 回答