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



似乎这个错误是如此普遍,以至于许多现有的解决方案都解决了不同的问题。

在我的情况下,我创建了一个宏,在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年的连接字符串结构,或者在工作中有其他问题?

解决方案:

我使用Excel 2010的所有机器都有"SQL Server原生客户端10.0"作为ODBC数据源的可能驱动程序。使用Excel 2007的机器只有"SQL Server"。

我把我的连接字符串改为:

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

而且效果很好。

感谢那些回应的人。

将属性.Refresh BackgroundQuery:=False更改为.Refresh。关于这一点,从2007年到2010年没有任何变化,所以如果更改属性不能解决问题,则有其他事情正在发生,例如部分工作簿损坏。

我在从宏调用存储过程时遇到了同样的问题。在网上花了一整天的时间寻找解决办法后,我终于找到了一个解决办法。

我使用SET NOCOUNT ON;

工作!

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

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

微软文档:https://learn.microsoft.com/en-us/sql/t-sql/statements/set-nocount-transact-sql

下面是一个实现。

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

我有这个确切的错误。调试也将带我到.refresh行。我想尽了一切办法来修好那条线。毫无效果。

"一般ODBC错误"的措辞让我思考…我去运行>> Microsoft ODBC Administrator>>选择我的数据源>>单击配置按钮>>单击测试连接

返回一个错误,我的密码已经过期,数据库被设置为只读。我的Windows用户密码没有过期,但它是在窗口当我"应该"改变我的密码…我使用的是一台工作机器,每60-90天左右必须更改用户帐户密码,并有30天左右的宽限期。我都不知道。

不是说这是你的修复,但我得到了完全相同的错误,并尝试了每一个小技巧和编辑这个网站,和互联网,不得不提供没有运气。我注销了,重置了我的Windows用户帐户密码,重新登录,打开excel文件,点击刷新按钮宏…这招奏效了。

无论如何,也许这将帮助某人…

最新更新