Я пытаюсь удалить соединение из моей рабочей книги, но я все еще получаю ошибку времени выполнения 5. Я не знаю, что делать, потому что в моих других проектах это работает.Убийственное соединение в EXCEL vba
Благодарим за консультацию. Приветствие из Чехии.
Sub refresh_all()
Dim i As Integer
'~~> refresh workbook query
Application.DisplayAlerts = False
Workbooks("UAC_report_p.xlsb").Activate
'~~> wait for refresh then execute Call save_as
Do Until Application.CalculationState = xlDone
DoEvents
Loop
ActiveWorkbook.RefreshAll
Workbooks("UAC_report_p.xlsb").Activate
'~~>kill all connections
For i = 1 To ActiveWorkbook.Connections.Count
If ActiveWorkbook.Connections.Count = 0 Then Exit For
ActiveWorkbook.Connections.Item(i).Delete
i = i - 1
Next i
Application.DisplayAlerts = True
End Sub
P.S. получаю ошибку на
ActiveWorkbook.Connections.Item(i).Delete
В каком офисе вы используете? Кстати, я бы порекомендовал две вещи, которые могут помочь: 1 - указать имя соединения вместо ID (conn.Name), 2-do a Refresh, прежде чем пытаться удалить соединение, поскольку оно все еще может работать, что возможно причина conn. не удаляется (во избежание несогласованности данных) –
Я использую MS excel 2010, я обновляю его до убийства соединений –
Использование OLE или ODBC или обоих? Потому что я сделал бы это, как мог бы помочь - хотя бы - «для каждого conn в Actw.Conns; ActiveWorkbook.Connections (conn.Name) .ODBCConnection.Refresh; ActiveWorkbook.Connections (1) .ODBCConnection.Delete next» (если это ODBC) –