Я пытаюсь вставить результаты запроса на доступ к листу в Excel.
Когда я запускаю следующий код, ничего не происходит.Никаких ошибок или предупреждений, просто ничего не вставляется. Однако, когда я запускаю тот же код, но использую таблицу вместо имени запроса, он успешно извлекает таблицу.Но когда я заменяю его именем запроса, он ничего не возвращает.
В прошлом я делал то же самое, но вместо того, чтобы вызывать имя запроса, я сохранял SQL-запрос в виде строки внутри макроса и вызывал запрос, ссылаясь на строку.Я попробовал это, и в этом случае это не сработало.
Запрос, который я пытаюсь получить, ссылается на другие запросы в виде таблиц, и я думаю, именно поэтому у меня возникают проблемы.Как я уже сказал, я извлекал данные из Access с помощью этого кода много раз, но я мог это делать только тогда, когда ссылаюсь только на таблицы, а не на запросы.
Dim Con As ADODB.Connection
Set Con = New ADODB.Connection
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim iCols As Integer
Set Con = New ADODB.Connection
With Con
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open AccessDBPath
End With
Set rs = New ADODB.Recordset
rs.Open "query1", Con
Sheets("NAHV").Range("E2").CopyFromRecordset rs
Я попытался заменить строку rs.Open командой Execute:
Set rs = Con.Execute("query1")
, но это также не сработало.
Я также попытался заменитьполный блок с
Dim cn As Object, rs As Object
Dim myFile As String: myFile = AccessDBPath
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & myFile & ";"
.Open
End With
Set rs = cn.Execute("query1")
Sheets("NAHV").Range("E2").CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
, и это тоже не сработало.