Как насчет проверки того, существует ли элемент на странице, путем проверки, создан ли объект?
Итак, Set user_id_element = ie.document.getElementById("user_id")
, затем проверьте IsObject(user_id_element)
, и если это будет продолжаться, то если он не будет зациклен до появления? было бы желательно иметь какие-то условия выхода на случай, если они никогда не появятся.
примерно так:
Sub AutoLogin()
Const Url = "https://www.campus.ie.edu"
Dim userName As String, password As String, LoginData As Worksheet
Set LoginData = ThisWorkbook.Worksheets("Sheet1")
userName = LoginData.Cells(1, "A").Value
password = LoginData.Cells(2, "A").Value
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate Url
ie.Visible = True
ieBusy ie
Debug.Print ie.locationurl
If InStr(1, ie.locationurl, "portal") > 0 Then
'Already logged in
Else
'Need to log in
Do While Not IsObject(ie.document.getElementById("user_id"))
'Check if the element is present, otherwise loop and wait
ieBusy ie
Loop
ie.document.getElementById("user_id").Value = userName
ie.document.all.Item("password").Value = password
'One way or another submit the form
'ie.document.getElementById("password").Focus
'Application.SendKeys "{ENTER}" 'Submit form
ie.document.forms("login").submit
'ie.Document.getelementbyid("login").Click
End If
End Sub
Sub ieBusy(ie As Object)
Do While ie.Busy
DoEvents
Loop
End Sub