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 要求对象