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
어떤 줄에 오류가 발생합니까? 또한 SQL Server 암호에 작은 따옴표가 있습니까? – shahkalpesh
코드는 연결 문자열 바로 다음의 'cnt.open()'에서 종료됩니다. 당신에게 패스워드 질문에 대답하기 위해, 나는 그 주위에 작은 따옴표를 가지고있다. – brohjoe
데이터베이스 이름과 사용자 이름 사이에 세미콜론이 필요하지 않습니까? 또한, 제쳐두고, 귀하의 Sub의 마지막 5 행은 절대로 실행되지 않습니다. –