【发布时间】:2012-03-01 19:11:18
【问题描述】:
我尝试通过 VBA 从 excel 2007 调用存储过程。我想从存储过程中返回到 excel 表中。但是我在 Worksheets("Sheet1").Range("A1").CopyFromRecordset objMyRecordset 上得到“对象关闭时不允许运行 3074 操作”。
我做了很多没有结论的搜索。我只想知道是否需要先在MSSQL存储过程中定义一个表变量,然后再插入进去。
下面是我写的代码:
****** 存储过程 sp_weekly ****
select [field1], [field2] into mytable_2 from mytable_1
select a.*, b.field4 from mytable_2 a
inner mytable_3 b on join a.field1 = b.field3
******* 在 Excel Marcos 中
Option Explicit
Sub OpenConnection()
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyRecordset As ADODB.Recordset
Dim ConnectionString As String
Dim CommandText As String
Set objMyConn = CreateObject("ADODB.Connection")
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
ConnectionString = "Provider=sqloledb;Data Source=abcsql,1433;Initial Catalog=admin;User Id=sa;Password=1234abcd;"
objMyConn.Open ConnectionString
Set objMyCmd.ActiveConnection = objMyConn
CommandText = "exec [admin].[dbo].[sp_weekly]"
objMyCmd.CommandType = adCmdText
Set objMyRecordset.Source = objMyCmd
objMyRecordset.Open
Worksheets("Sheet1").Range("A1").CopyFromRecordset objMyRecordset
end
【问题讨论】:
标签: excel excel-2007 vba