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

问题描述:

看来,此错误非常普遍,以至于许多现有解决方案都会解决不同的问题。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年的连接字符串结构,还是存在另一个工作问题?

+0

错误1004是通用错误,但您是否有实际的错误文本?应该说类似于运行时错误1004:后面跟着更多描述 - 这将有助于缩小问题的范围。 – AxGryndr 2013-04-22 16:20:06

+0

运行时错误“1004”:常规ODBC错误 – lance 2013-04-22 16:39:08

+0

在医用工作表的范围B1中是否存在查询?如果你在单元格中点击右键,你应该看到刷新选项。 – AxGryndr 2013-04-22 16:54:36

解决方案:

我用用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;" 

和它的工作就像一个魅力。

感谢那些回复。

更改属性.Refresh BackgroundQuery:=False.Refresh。在这方面,从2007年到2010年没有任何变化,所以如果更改属性并不能解决问题,那么还有其他问题正在发生,例如部分工作簿已损坏。

+0

感谢您的建议,但它不是导致问题的.BackgroundQuery属性。更改为您的解决方案(或完全删除BackgroundQuery)不会产生任何影响。这是导致问题的更新。 – lance 2013-04-22 16:37:16

+0

对不起,我的意思只是。刷新而不使用BackgroundQuery:= False。 – AxGryndr 2013-04-22 17:54:16

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

我用SET NOCOUNT ON;

它的工作!

+1

请您详细说明应该去哪里以及它做什么? – SuperBiasedMan 2015-07-02 13:34:15

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

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

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 
+0

这不提供问题的答案。一旦你有足够的[声誉](http://*.com/help/whats-reputation),你将可以在任何帖子上[评论](http://*.com/help/privileges/comment)。另外检查这[我可以做什么,而不是](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an-i-do-instead )。 – thewaywewere 2017-05-26 14:58:14

+0

是的,我知道我没有提及OP,我表示我无法发表评论,旨在通过@SuperBiasedMan发表评论(这是一个问题)。这个网站的贡献片段是新的,因此试图导航如何在没有足够声誉的情况下进行交互。感谢您的链接。 – Jordan 2017-07-05 19:40:58