如何将SQL Server存储过程结果返回到Excel

时间:2013-10-11 20:22:02

标签: sql-server excel vba

我可以验证我的VBA代码是否正在服务器上执行存储过程,但是我无法将记录集恢复到Excel中。

Set con = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset

con.Open "Provider=SQLOLEDB;Data Source=" & ServerName & ";...."//works 
set rs = cmd.Execute(, SP_Param, adCmdStoredProc) // executes
If rs.EOF = False Then WSP1.Cells(4, 1).CopyFromRecordset rs
//tosses Operation is not allowed when the object is closed.

我已尝试使用SQLOLEDB提供程序,但无法使用该提供程序访问存储过程。

相关参考文献:

  • ActiveX数据对象Recordset 6.0 Lib
  • ActiveX DataObjects 6.1
  • ActiveX远程数据服务6.0

2 个答案:

答案 0 :(得分:5)

SET NOCOUNT ON添加到SQL存储过程的开头。

答案 1 :(得分:2)

我怀疑这是问题,但你应该尝试在proc中设置NOCOUNT,以确保不是问题。

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;