2009-10-16 4 views
0

MS Query를 사용하여 다양한 데이터베이스에서 데이터를 검색하여 관리 메트릭을 만듭니다 (예 : Excel 내에서 데이터 ... 외부 데이터 가져 오기 ... 새 데이터베이스 쿼리) . SQL 쿼리와 매개 변수 (대부분 conn 문자열)는 Excel에서 자동으로 스프레드 시트에 저장됩니다.서버가 이동되었으므로 MS Excel 2003 쿼리가 작동하지 않습니다.

그러나 최근 Google 데이터베이스 중 하나를 새 서버로 이동했습니다. 결과적으로 Excel은 데이터를 새로 고칠 때 새 ODBC 연결을 요구하지만 새 값을 허용하지 않습니다. 새 쿼리를 올바르게 만들 수 있으므로 ODBC 연결이 올바르게 설정되었지만 쿼리를 변경할 수는 없습니다.

프로그래밍 방식으로 또는 다른 방법으로 이러한 설정에서 IP 주소를 변경할 수 있습니까? 16 진수 편집기에서 xls 파일을 변경해 보았는데 (IP 주소가 거기에 표시됨), 통합 문서가 손상되었다고 표시됩니다.

답변

3

쿼리의 연결 문자열을 변경해야하는 경우이 매크로는 현재 통합 문서의 모든 쿼리에 대해 변경합니다 (변경 될 통합 문서의 코드를 저장할 필요가 없음).

두 개의 샘플 연결 문자열을 포함합니다. 하나는 dsn을 제공하고 하나는 서버/데이터베이스를 제공합니다. 새 쿼리를 만들 때 DSN이 좋으면 먼저 DSN을 시도하십시오. SQL Server 버전을 사용하는 경우 SQL Server 버전을 조정하십시오.

또한 하나는 표준 보안 (uid, pwd)을 사용하고 다른 하나는 Windows 기반 보안 (트러스트 된 연결)을 사용합니다. 적절하게 혼합하고 일치시킵니다.

Sub ChangeAddress() 

Dim qt As QueryTable 
Dim wks As Worksheet 

Const strNEW_CONN_DSN As String = "ODBC;DSN=MyDSN;Description=MyDescription;UID=myid;PWD=mypwd;" 

Const strNEW_CONN_SQL as String = "Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDB;Trusted_Connection=yes;" 

For Each wks In ActiveWorkbook.Worksheets 
    For Each qt In wks.QueryTables 
     qt.Connection = strNEW_CONN_DSN 
    Next qt 
Next wks 
End Sub 
+0

그 덕분에 많은 도움이되었습니다. – Andrew

+0

질문에 Excel 2003이 지정되었지만 Excel 2007을 사용하는 사람에게는이 코드가 작동하지 않습니다. 2007 년에는 ActiveWorkbook.Connections.ODBCConnection.Connection을 변경해야합니다. – dendarii

관련 문제