2010-03-27 169 views
4

在Excel 2007中运行VBA代码时出现自动化错误。我尝试连接到远程SQL Server数据库并将数据从Excel加载到SQL Server。在Excel中运行VBA脚本时出现自动化错误

我得到的错误是,

“运行时错误 '-2147217843(80040E4D)':自动化错误”。

我检出了MSDN网站,它提示这可能是由于与sqloledb提供程序相关的错误,并且缓解此问题的一种方法是使用ODBC。那么我改变了连接字符串以反映ODBC提供者和相关参数,我仍然得到相同的错误。

下面是ODBC的代码提供者:

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服务器密码是否有单引号? – shahkalpesh 2010-03-27 04:35:18

+0

代码在连接字符串之后的'cnt.open()处死亡。要回答你的密码问题,我确实有单引号。 – brohjoe 2010-03-27 05:45:30

+0

你不需要数据库名称和用户名之间的分号吗? 另外,你的Sub的最后5行永远不会被执行。 – 2010-03-27 16:00:29

回答

3

从您的文章(和你)的答复似乎你的ConnectionString是错误的? 连接字符串可能会导致真正的头痛。我知道。 尝试Robert Gelb的方法:http://www.vbrad.com/article.aspx?id=81 每次都适合我。

相关问题