Sub Access()
Dim filepath As String
Dim oConn As ADODB.Connection
Dim RS As ADODB.Recordset
Dim ssql As String
Dim strMyPath As String, strDBName As String, strDB As String
'Getting workbook path
Path = Application.ActiveWorkbook.Path
'Finding complete address of the database
filepath = Path & "\TBS.accdb"
sConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & filepath & ";" & _
"Jet OLEDB:Engine Type=5;" & _
"Persist Security Info=False;"
'Open a connection.
Set oConn = New ADODB.Connection
oConn.Open sConn
ssql = Range("query ") & Sheets("backened").Range("F3")
'query is a named range containing sql query
MsgBox (Sheets("backened").Range("F3"))
Set RS = New ADODB.Recordset
Set RS.ActiveConnection = oConn
RS.Open ssql, oConn, adOpenStatic, adLockReadOnly, adCmdText
With RS
Sheets("sheet3").Select
Sheets("Sheet3").Range("F10").CopyFromRecordset RS
.Close
End With
End Sub
В приведенном выше коде FilePath вместе с именем базы данных хранится в «FilePath»Я пытаюсь получить данные из Databse доступа через VBA через SQL-запрос
Всякий раз, когда запрос «select * from» это работает нормально, но когда я выбираю определенные столбцы или выполнить какую-либо группу при работе он выдает ошибку - время выполнения ошибки «-2147467259 (8000405)» метода «открытый» объект «_recordset» не удалось
Помимо некоторых косметологических проблем, нет ничего плохого в вашем vba-коде ... предоставлен 'ssql = Range (" query ") & Sheets (" backened "). Range (" F3 ")' фактически возвращает то, что вы хотите , Скорее всего, в вашем объединенном 'ssql' отсутствует' Blank'/'vbCrLf'. 'Debug.Print ssql' и опубликовать полученную SQL-строку. –
@martin dreher Я получаю следующий результат. Выберите зону из Cardiology_Pradaxa, а затем при повторении той же ошибки отладки, упомянутой выше. –