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

时间:2013-04-22 16:03:24

标签: excel vba odbc runtime

看来这个错误是如此通用,以至于许多现有的解决方案都解决了不同的问题。

在我的情况下,我创建了一个在Excel 2010中工作但在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年的连接字符串结构,还是有其他问题在起作用?

5 个答案:

答案 0 :(得分:3)

解决方案:

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

我将连接字符串更改为:

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

它就像一个魅力。

感谢那些回复的人。

答案 1 :(得分:0)

将您的媒体资源.Refresh BackgroundQuery:=False更改为.Refresh。关于这一点,从2007年到2010年没有任何变化,因此如果更改属性不能解决问题,则会发生其他事情,例如工作簿的一部分已损坏。

答案 2 :(得分:0)

从宏调用存储过程时遇到了同样的问题。在搜索互联网寻找解决方案一整天后,我终于找到了解决方案。

我使用了SET NOCOUNT ON;

有效!

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

我有这个确切的错误。调试也会把我带到.refresh行。我竭尽所能地解决了这一问题。没事。

“常规ODBC错误”字样让我想到...我去运行>> Microsoft ODBC Administrator >>选择我的数据源>>单击“配置”按钮>>单击“测试连接”

返回一个错误,提示我密码已过期,并且数据库设置为只读。我的Windows用户密码尚未过期,但是它在我“应该”更改密码的时间之内...我使用的是工作机,并且每60-90天左右(约30天)更改一次强制性用户帐户密码天宽限期。甚至都不知道。

并不是说这是为您解决的问题,但是我遇到了完全相同的错误,并且尝试了所有小技巧并编辑了该网站,而Internet却没有运气。我注销,重设Windows用户帐户密码,重新登录,打开excel文件,点击“刷新按钮”宏……然后它起作用了。

无论如何,也许这会帮助某人...