Я использую VBA для обновления sh соединения данных в книге Excel с строковой переменной, используемой для выполнения запроса.
При использовании запроса SELECT все работает как надо; если это запрос INSERT, он генерирует прикладную или объектную ошибку на Connections(ConnectionName).Refresh
Ошибка не повторяется, если я запускаю код до точки, где он добавляет строку запроса в Передача данных и вручную нажмите кнопку Refre sh в Excel.
Sub UploadData()
Dim wb As Workbook
Dim UploadSheetNum As Integer
Dim QueryCol As String
Dim QueryString As String
Dim CurRowString As String
Dim ConnName As String
Set wb = ThisWorkbook
UploadSheetNum = 3
QueryCol = "H"
ConnName = "DataConn"
Call VBAModule_v1.SwitchtoSheet(UploadSheetNum, wb)
For i = 1 To VBAModule_v1.GetLastRow(QueryCol)
CurRowString = wb.Sheets(UploadSheetNum).Range(QueryCol & i)
QueryString = QueryString & CurRowString & Chr(10)
Next i
Call VBAModule.RefreshConnection(ConnName, QueryString, wb)
End Sub
Sub RefreshConnection(ConnectionName As String, Query As String, wb As Workbook)
wb.Activate
On Error GoTo ExitProc
With wb.Connections(ConnectionName).ODBCConnection
.BackgroundQuery = False
.CommandText = Query
End With
wb.Connections(ConnectionName).Refresh
DoEvents
Exit Sub
ExitProc:
MsgBox ("Error Sub RefreshConnection: Issue with ConnectionName '" & _
ConnectionName & "' or Query - " & Err.Description)
End Sub