2010-03-27 6 views
4

Excel 2007에서 VBA 코드를 실행하면 자동화 오류가 발생합니다. 원격 SQL Server DB에 연결하고 Excel에서 SQL Server로 데이터를로드하려고합니다.Excel에서 VBA 스크립트를 실행하면 자동화 오류가 발생합니다.

내가 오류는,

"런타임 오류 '-2147217843 (80040e4d)': 자동화 오류".

MSDN 사이트를 확인한 결과 sqloledb 공급자와 관련된 버그로 인한 것일 수 있으며이 문제를 완화하는 한 가지 방법은 ODBC를 사용하는 것입니다. ODBC 공급자 및 관련 매개 변수를 반영하도록 연결 문자열을 변경했으며 여전히 동일한 오류가 발생합니다. 당신의 ConnectionString에 결함이있는 것 같다 게시물 (그리고 당신)에 대한 답변을

Dim cnt As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim stSQL As String 
Dim wbBook As Workbook 
Dim wsSheet As Worksheet 
Dim rnStart As Range 



Public Sub loadData() 
    'This was set up using Microsoft ActiveX Data Components version 6.0. 

    'Create ADODB connection object, open connection and construct the connection string object. 
    Set cnt = New ADODB.Connection 
    cnt.ConnectionString = _ 
    "Driver={SQL Server}; Server=onlineSQLServer2010.foo.com; Database=fooDB Uid=logonalready;Pwd='helpmeOB1';" 

    cnt.Open 

    On Error GoTo ErrorHandler 

    'Open Excel and run query to export data to SQL Server. 

    strSQL = "SELECT * INTO SalesOrders FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', & _ 
    "'Data Source=C:\Database.xlsx; Extended Properties=Excel 12.0')...[SalesOrders$]" 

    cnt.Execute (strSQL) 

    'Error handling. 
ErrorExit: 
    'Reclaim memory from the connection objects 
    Set rst = Nothing 
    Set cnt = Nothing 

    Exit Sub 

ErrorHandler: 
    MsgBox Err.Description, vbCritical 
    Resume ErrorExit 


    'clean up and reclaim memory resources. 
    cnt.Close 
    If CBool(cnt.State And adStateOpen) Then 
    Set rst = Nothing 
    Set cnt = Nothing 

    End If 

End Sub 
+0

어떤 줄에 오류가 발생합니까? 또한 SQL Server 암호에 작은 따옴표가 있습니까? – shahkalpesh

+0

코드는 연결 문자열 바로 다음의 'cnt.open()'에서 종료됩니다. 당신에게 패스워드 질문에 대답하기 위해, 나는 그 주위에 작은 따옴표를 가지고있다. – brohjoe

+0

데이터베이스 이름과 사용자 이름 사이에 세미콜론이 필요하지 않습니까? 또한, 제쳐두고, 귀하의 Sub의 마지막 5 행은 절대로 실행되지 않습니다. –

답변

3

: 여기

는 공급자로 ODBC와 코드? 연결 문자열로 인해 실제 두통이 생길 수 있습니다. 알아. Robert Gelb의 접근 방식을 시도하십시오. http://www.vbrad.com/article.aspx?id=81 매번 저에게 맞습니다.

관련 문제