Ошибка Excel VBA SQL, ошибка подключения

Я получаю следующую ошибку, когда пытаюсь запустить внутренний SQL-запрос в своей электронной таблице Excel.

Ошибка 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

person excelguy    schedule 15.05.2018    source источник
comment
Каково значение report_name в случае сбоя?   -  person Tim Williams    schedule 15.05.2018
comment
@TimWilliams, значение report_name — это путь к файлу, т. е. \\path\stack\overflow.xlsb   -  person excelguy    schedule 15.05.2018


Ответы (1)


не могли бы вы попробовать изменить ниже

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

to

  "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
person Barry    schedule 15.05.2018
comment
похоже, я получаю ту же ошибку, либо сбой подключения, либо ошибка автоматизации. ?Имя_отчета равно пути к файлу. - person excelguy; 15.05.2018
comment
на какой строке ломается? - person Barry; 15.05.2018
comment
Set rs = conn_obj.Execute(SQL) при наведении курсора на rs = ничего. - person excelguy; 15.05.2018
comment
Я добавил альтернативу, вы можете попробовать? - person Barry; 15.05.2018
comment
Попробовал, теперь получил новую ошибку, обновил свой вопрос результатами. Я заменил этот раздел кода вашей альтернативой и получил новую ошибку. Для DBPath я использовал report name из моего исходного кода, не уверен, что это правильно, а для sSQLString я использовал query из моего исходного кода. - person excelguy; 15.05.2018
comment
Я предполагаю, что мой путь к базе данных неверен, где я могу найти свой путь к базе данных? Кстати, это внутренний SQL-запрос между листами. - person excelguy; 15.05.2018
comment
Почему вы заменили ACE.OLEDB.12.0 на старый Jet.OLEDB.4.0? - person Parfait; 15.05.2018