Excel 2007 – 1004运行时错误刷新查询表

看来,这个错误是非常普遍的,许多现有的解决scheme解决不同的问题。

在我的情况下,我创build了一个在Excel 2010中工作的macros,在Excel 2007中不起作用。

这里是代码的总结:

cn = "ODBC;Driver={SQL Server Native Client 10.0};Server=serverName;Database=dbName;Trusted_Connection=yes;" sql = "select top 10 * from tableName" Dim S As Worksheet Set S = ActiveWorkbook.Sheets("Medical") With S.QueryTables.Add(Connection:=cn, Destination:=S.Range("B1")) .CommandText = sql .Refresh BackgroundQuery:=False End With 

此代码在Excel 2010中完美执行,但在Excel 2007中出错。

我是否需要更改2007年的连接string结构,还是有工作中的另一个问题?

解:

我在Excel 2010中使用的所有机器都具有“SQL Server Native Client 10.0”作为ODBC数据源的可能驱动程序。 Excel 2007的机器只有“SQL Server”。

我改变了我的连接string是:

 cn = "ODBC;Driver=SQL Server;Server=serverName;Database=dbName;Trusted_Connection=yes;" 

它像一个魅力工作。

感谢那些回应。

更改你的属性。 .Refresh BackgroundQuery:=False.Refresh 。 从2007年到2010年没有任何变化,所以如果改变属性不能解决问题还有其他事情正在进行,如工作簿的一部分是腐败的。

从macros调用存储过程时,我有同样的问题。 浪费了一整天的时间search互联网寻找解决scheme后,我终于find了解决办法。

我用SET NOCOUNT ON;

有效!

无法添加评论,所以这是为了解决上面提出的问题。

这个答案为我节省了很多时间。

这个MSFT文档: https : //docs.microsoft.com/en-us/sql/t-sql/statements/set-nocount-transact-sql

下面是一个实现。

 create proc yourSproc as set nocount on; begin --Contents of sproc end