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"))
Другие вопросы по тегам