VBA, чтобы открыть URL, подождите 5 секунд, затем откройте другой URL
У меня есть веб-страница, которую я хочу открыть (URL-адрес создается из значений ячеек в Excel), но чтобы открыть этот URL-адрес, необходимо войти в систему. Но если я сначала открою главную страницу сервера, у меня будет автоматический вход в систему, а затем я смогу открыть первый URL-адрес без необходимости пользователя / прохода.
Пока у меня есть этот код, который открывает IE с обоими URL-адресами одновременно, в одном и том же окне, но на разных вкладках, в точности так, как я хочу, за исключением того, что для URL2 требуется вход в систему. Чтобы обойти логин, я хотел бы добавить паузу между навигацией и навигацией2, чтобы первая страница могла завершить загрузку до того, как откроется второй URL.
Кто-нибудь может мне с этим помочь?
Изменить: я попробовал предложения из ниже, но это все еще требует входа в систему. Я пробовал другое решение, которое не является обязательным, но оно работает. Он состоит из двух кнопок, запускающих разные макросы, где первая открывает главную страницу для входа в систему, а вторая открывает следующий URL. Я написал их следующим образом:
Первый:
Sub login()
Dim IE As Object
Const navOpenInNewTab = &H800
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://www.example.mainpage.com"
End Sub
Второй:
Sub search()
Dim IE As Object
Const navOpenInNewTab = &H800
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)
End Sub
Возможно ли, чтобы третий макрос запустил два других с задержкой между ними?
Оригинальный код:
Sub open_url()
Dim IE As Object
Const navOpenInNewTab = &H800
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://www.example.mainpage.com"
'here I would like to add a pause for 5 seconds
IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)
End Sub
2 ответа
Может быть, лучше подождать, пока первая страница не загрузится полностью:
IE.Navigate "http://www.example.mainpage.com"
Do While IE.Busy Or Not IE.readyState = IE_READYSTATE.complete: DoEvents: Loop
IE.Navigate2 "http://www.example.mainpage.com" & Range("w1").Cells.Value & Range("W2").Cells.Value, CLng(navOpenInNewTab)
Обратите внимание, что перечисление ReadyState READYSTATE_COMPLETE имеет числовое значение 4. Это то, что вы должны использовать в случае позднего связывания (всегда в VBScript).
Вы имеете в виду что-то вроде:
Application.Wait(Now + TimeValue("00:00:05"))