2013-04-22 3 views
1

이 오류는 너무 일반적인 것이므로 많은 기존 솔루션이 서로 다른 문제를 해결합니다.Excel 2007 - 1004 런타임 오류 쿼리 테이블 새로 고침

내가 코드를 요약 한 것입니다 엑셀 2010에서 작동하고 여기

엑셀 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에서 완벽하게 실행을 Excel 2007에서 오류가 발생했습니다.

2007 년 연결 문자열 구조를 변경해야합니까, 아니면 다른 문제가 있습니까?

+0

오류 1004는 일반적인 오류이지만 실제 오류 텍스트가 있습니까? 런타임 오류 1004 : 더 많은 설명이 뒤따라야합니다. 문제의 범위를 좁히는 데 도움이됩니다. – AxGryndr

+0

런타임 오류 '1004': 일반 ODBC 오류 – lance

+0

의학 시트의 B1 범위에 쿼리가 있습니까? 셀을 마우스 오른쪽 버튼으로 클릭하면 새로 고침 옵션이 나타납니다. – AxGryndr

답변

2

솔루션 :

내가 엑셀 ​​2010과 함께 사용 된 모든 기계는 ODBC 데이터 소스에 대한 가능한 드라이버로의 "SQL Server 네이티브 클라이언트 10.0"가. Excel 2007이 설치된 컴퓨터에는 "SQL Server"만 있습니다.

내가 할 내 연결 문자열을 변경 :

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

하고 그것이 마치 마법처럼 일했다.

응답 한 사람에게 감사드립니다.

0

재산을 .Refresh BackgroundQuery:=False으로 변경하면 .Refresh이됩니다. 이것에 관해서 2007 년에서 2010 년으로 변경된 사항은 없습니다. 따라서 속성을 변경해도 문제가 해결되지 않으면 통합 문서의 일부가 손상된 것과 같은 다른 문제가 있습니다.

+0

제안 해 주셔서 감사합니다. 문제를 일으키는 .BackgroundQuery 속성이 아닙니다. 솔루션으로 변경 (또는 BackgroundQuery를 모두 제거)해도 아무런 효과가 없습니다. 문제를 일으키는 것은 새로 고침입니다. – lance

+0

죄송합니다. BackgroundQuery : = False를 사용하지 않고 방금 새로 고침을 의미합니다. – AxGryndr

0

매크로에서 저장 프로 시저를 호출 할 때 동일한 문제가 발생했습니다. 하루 종일 인터넷 검색에서 솔루션을 찾은 후 결국 해결책을 찾았습니다.

SET NOCOUNT ON;

효과가 있습니다.

+1

이것이 어디로 가야하고 그것이 무엇을해야하는지 자세히 설명해 주시겠습니까? – SuperBiasedMan

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

이 질문에 대한 답을 제공하지 않습니다. 충분한 [평판] (http://stackoverflow.com/help/whats-reputation)이 있으면 어떤 글에도 [comment] (http://stackoverflow.com/help/privileges/comment) 할 수 있습니다. 또한 이것을 확인하십시오. [대신 할 수있는 방법] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reference-to-comment-what-can-i-do-instead). – thewaywewere

+0

예. 나는 OP를 언급하지 않았다는 것을 알고, 나는 @SuperBiasedMan에 의해 (질문이었던) 코멘트를 언급하기위한 목적의 코멘트를 게시 할 수 없다는 것을 지적했다. 충분한 명성없이 상호 작용하는 방법을 탐색하려고 사이트의 기여 부분을 처음 접하십시오. 링크를 가져 주셔서 감사합니다. – Jordan