Excel VBA SQL 错误,连接失败

Posted

技术标签:

【中文标题】Excel VBA SQL 错误,连接失败【英文标题】:Excel VBA SQL error, Connection failed 【发布时间】:2018-05-15 01:02:32 【问题描述】:

当我尝试在我的 Excel 电子表格中运行内部 sql 查询时出现以下错误。

错误 2147467259 - “执行”对象“_Connection”的方法失败。

此外,当我使用断点运行代码时,我可能会遇到自动化错误。我在 Excel 2013 (15.0.5023.1000) 中查询。

With conn_obj
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & report_name & ";" & _
    "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    .Open
End With

On Error GoTo err_SQL
SQL = query

Set rs = conn_obj.Execute(SQL)  'error here

更新:我用下面的代码替换了上面的代码,我收到一个错误

初始化字符串的格式不符合 OLE DB 规范。

Dim sSQLString As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String

Let DBPath = report_name 'Path here
Let sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath & ";Extended Properties='text;HDR=YES;';"

Conn.Open sconnect
sSQLString = query ' query here
mrs.Open sSQLString, Conn

【问题讨论】:

失败时report_name的值是多少? @TimWilliams ,report_name的值为文件的路径,即\\path\stack\overflow.xlsb 【参考方案1】:

您可以尝试更改以下内容

 "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"

  "Extended Properties='Excel 12.0 Xml;HDR=YES';"

如果不建议report_name 等于什么。

或者尝试以下方法:

    Dim sSQLString As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String, sconnect As String
Let DBPath = "" 'Path here
Let sconnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPath & ";Extended Properties='text;HDR=YES;';"
Conn.Open sconnect
sSQLString = "" ' query here
mrs.Open sSQLString, Conn

【讨论】:

似乎我遇到了同样的错误,连接失败或自动化错误。 ?report_name 等于文件的路径名。 它在哪一行中断? Set rs = conn_obj.Execute(SQL) 悬停在 rs = 无。 我添加了一个替代方案,你可以试试吗? 试过了,现在出现新错误,我用结果更新了我的问题。我用您的替代方法替换了那部分代码并得到了一个新错误,对于DBPath,我使用了原始代码中的report name,不确定这是否正确,对于sSQLString,我使用了原始代码中的query

以上是关于Excel VBA SQL 错误,连接失败的主要内容,如果未能解决你的问题,请参考以下文章

在 VBA 中使用 SQL 连接两个 Excel 工作簿中的数据(只读错误)

EXCEL的VBA ,连接数据库,运行时错误 424 要求对象

通过 *** 与 SQL Server 2008 的 ODBC 连接失败

Excel VBA 查询访问失败

从 EXCEL 连接到 SQL 数据库

数据源 连接失败