Я понимаю, что ваш код запускает IE и делает его видимым, чтобы пользователь мог завершить sh процесс входа в систему, а затем после выполнения какого-либо кода вы делаете IE видимым false.
Вы сказали, что если пользователь закрывает окно IE вручную во время аутентификации, тогда ваш код теряет управление.
Есть несколько подходов, которые вы можете попробовать решить эту проблему.
Вы можете попробовать запустить браузер IE в режиме в полноэкранном режиме . Поэтому он не будет отображать элементы управления окна браузера и кнопку закрытия.
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.FullScreen = True
Обратите внимание, что при таком подходе пользователь может использовать клавишу ALT + TAB для переключения окна, а затем пользователь может попытаться закрыть это вручную.
Еще одна вещь, которую вы можете попробовать, - использовать событие OnQuit .
Событие OnQuit сработает, когда браузер IE закроется. Таким образом, вы можете попытаться установить для объектов значение Nothing в этом событии или предпринять необходимые шаги для сброса кода. Таким образом, вы можете сохранить контроль над кодом.
Для реализации события OnQuit вы можете обратиться к приведенным ниже шагам.
- Создать модуль Class с именем cls IE.
Добавьте приведенный ниже код в модуль класса.
Параметр Явный
Public WithEvents IE As InternetExplorer
Private Sub Class_Initialize()
Set IE = New InternetExplorer
End Sub
Private Sub Class_Terminate()
Set IE = Nothing
End Sub
Private Sub Ie_OnQuit()
MsgBox "Closed now"
End Sub
Создайте новый модуль и добавьте в него код ниже.
Option Explicit
Dim objApp As clsIE
Sub Tester()
'// Ivan F Moala
Set objApp = New clsIE
With objApp
.IE.FullScreen = True
.IE.Visible = True
.IE.Navigate ("http://example.com")
End With
End Sub
Теперь, если вы запустите модуль и попытаетесь закрыть браузер IE вручную, он покажет сообщение. Кроме того, вы можете попытаться изменить код в соответствии с вашими требованиями.
Ссылка:
Код в событии закрытия IE