Ошибка при удалении соединений из Excel с VBA - PullRequest
0 голосов
/ 28 марта 2019

У меня есть следующий код:

Sub deletedconns()
For i = 1 To ActiveWorkbook.Connections.Count
If ActiveWorkbook.Connections.Count = 0 Then Exit Sub
ActiveWorkbook.Connections.Item(i).Delete
i = i - 1
Next i
End Sub

Когда я пытаюсь использовать подпрограмму, я получаю эту ошибку:

Ошибка времени выполнения '-2147417848 (80010108)':

Ошибка автоматизации Вызванный объект отключился от своих клиентов.

Дело в том, что мне нужно либо удалить соединения, либо иметь возможность изменить только путь.Я попытался отредактировать соединения, но это также меняет выбор разделителя с ошибками.

Ответы [ 2 ]

0 голосов
/ 28 марта 2019
Option Explicit

Sub deletedconns()

    Dim i As Long '<- You forgot to declare i

    With ThisWorkbook

        For i = .Connections.Count To 1 Step -1 '<- When we delete you good backwards
            'There is no need to check if connections are 0. if are zero the code would not get in the loop
        '                If .Connections.Count = 0 Then
        '                    Exit Sub
        '                Else
        '                    .Connections.Item(i).Delete
        '                End If '<- You forgot end if

        Next i

    End With

End Sub
0 голосов
/ 28 марта 2019

Если вы хотите вернуться назад в цикле, вы переходите от наибольшего значения к наименьшему. Вы пытаетесь заставить ваше i выйти за пределы заявленного диапазона

Sub deletedconns()
    Dim i As Long
    For i = ActiveWorkbook.Connections.Count To 1 Step -1
        ActiveWorkbook.Connections.Item(i).Delete
    Next i
End Sub

Вы также можете удалить строку If ActiveWorkbook.Connections.Count = 0 Then Exit Sub. Если ActiveWorkbook.Connections.Count = 0 код даже не войдет в ваш цикл

...