运行Excel VBA脚本时出现自动化错误

4

我在运行Excel 2007中的VBA代码时遇到了自动化错误。我正在尝试连接到远程SQL Server数据库,并将数据从Excel加载到SQL Server。

我得到的错误是:

"运行时错误'-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

错误出现在哪一行?此外,你的 SQL Server 密码中是否有单引号? - shahkalpesh
代码在连接字符串后的 'cnt.open() 处崩溃。回答您的密码问题,我确实在其周围加了单引号。 - brohjoe
你不需要在数据库名称和用户名之间加分号吗?另外,顺便说一下,你的Sub程序的最后5行永远不会被执行。 - Gary McGill
我已经更新了代码,以反映数据库名称和用户名之间的分号(我正在运行的真实版本中已经有一个分号)。我还重新排列了代码的最后5行,以便在结尾处关闭。 - brohjoe
1个回答

3

从你的帖子回复(以及你的回复)来看,似乎你的连接字符串有问题?连接字符串可能会引起真正的头痛。我知道。 尝试一下Robert Gelb的方法:http://www.vbrad.com/article.aspx?id=81 这个方法每次都适用于我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接