【问题标题】:Automation Error upon running VBA script in Excel在 Excel 中运行 VBA 脚本时出现自动化错误
【发布时间】:2011-02-01 10:59:43
【问题描述】:

在 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密码里面有单引号吗?
  • 代码在 'cnt.open() 处死掉,就在连接字符串之后。为了回答你的密码问题,我确实在它周围加上了单引号。
  • 数据库名称和用户名之间不需要分号吗?另外,顺便说一句,您的 Sub 的最后 5 行将永远不会被执行。
  • 我更新了代码以反映数据库名称和用户名之间的分号。 (我正在运行的真实版本中已经有一个分号)。我还重新排列了最后 5 行代码,使其在最后关闭。

标签: sql-server excel vba


【解决方案1】:

从您(和您的)帖子的回复来看,您的连接字符串似乎有问题? 连接字符串会引起真正的头痛。我知道。 试试 Robert Gelb 的方法:http://www.vbrad.com/article.aspx?id=81 每次都对我有用。

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2015-05-23
    相关资源
    最近更新 更多