Internet Explorer automatiseren

Gebruikersnaam en paswoord laten invullen

De procedure voor Ozgrid is uitgebreider. Het doel is hetzelfde als eerder (een getal zoeken op een webpagina via de dd tags). Maar hier gaan we ook expliciet inloggen en uitloggen. Zo ziet de login pagina eruit op Ozgrid:

Voor het inloggen gaan we te werk zoals op pagina 2 van dit artikel gesuggereerd: we kunnen HTML elementen ook rechtstreeks benaderen door middel van de naam of ID. Zo hebben we hier de naam vb_login_username voor het tekstvak van de gebruikersnaam.

Dan kunnen we tot zoiets komen:

Private Sub Ozgrid()
Dim InputElement As MSHTML.HTMLInputElement Dim l As MSHTML.HTMLLinkElement Const sURL As String = "http://www.ozgrid.com/forum/member.php?u=15727" NavigateTo sURL With oIE.Document 'inloggen met gebruiker, paswoord en zonder herinneren .getElementsByName("vb_login_username")(0).Value = "wigi" .getElementsByName("vb_login_password")(0).Value = "***" .getElementsByName("cookieuser")(0).Checked = False For Each InputElement In .getElementsByTagName("INPUT") If UCase(InputElement.Value) = "LOG IN" Then InputElement.Click Exit For End If Next LoadPage NavigateTo sURL [A3] = .getElementsByTagName("dd")(16).innerText 'uitloggen For Each l In .Links If UCase(l.innerText) = "LOG OUT" Then l.onclick = """" l.Click Exit For End If Next End With LoadPage Set l = Nothing: Set InputElement = Nothing
End Sub

Merk op dat we eerst navigeren naar de juiste pagina van mijn profiel. Dan vullen we de gegevens in en maken we een lus om vast te stellen wat de knop is om in te loggen. Daar klikken we op via code (de Click methode van een button of input element).

Daarna halen we getal op dat we nodig hebben en plaatsen het in cel A3. Dan is het tijd om uit te loggen. We zoeken binnen alle links op de pagina naar die link die de tekst Log out bevat. Daar “klikken” we op.

Dan krijg je op de website een venster waar we moeten bevestigen. Probleem is dat ik dat tijdens mijn voorbereidingen op dit artikel niet opmerkte, aangezien ik nooit het Internet Explorer venster toonde tijdens de code. Had ik dit gedaan, dan was het mij duidelijk geworden:

    oIE.Visible = True

Hoe gaan we dat venster “wegklikken” in code? We doen dit immers niet manueel. We kunnen een overzicht van alle Windows maken (het venster is ook een Window dat afstamt van het Window van oIE, oIE.HWnd). Dan via de SendMessage API een muisklik sturen. In die denkpiste is toch wel ruim een uur van mijn leven gegaan. Op zich werkte het wel, maar er moest en zou een makkelijkere manier zijn. En inderdaad, we kunnen het OnClick event van de link (om uit te loggen) uitschakelen:

    l.onclick = """"

En dan hebben we geen last meer van die melding! De code voor het MrExcel forum is gelijkaardig, die voor TM1forum kan je ook in het bestandje vinden.

We zijn er geraakt!

Voilà, dat weten we ook weeral!

Over Wim

Wim Gielis is Business Intelligence consultant en Excel expert

Andere links