Internet Explorer

Makrem można w Explorer’ze
Dużo zrobić, powiem szczerze.
Jednak przed kombinowaniem,
Się zastanów nad pytaniem:
HTML- co to jest? Wiesz jako tako?
Więc do dzieła, Rozrabiako.

Pierwsza sprawa – referencje,
Niech podkreślą swą prezencję.

Potem to już tylko z górki,
Niżej daję kodów zbiórki.

Tak się włącza aplikację,
Adres strony – nawigację.

IE referencje

Dim IE As InternetExplorerMedium
Set IE = InternetExplorerMedium
'albo Dim IE As New InternetExplorerMedium
ie.Visible = True
ie.Navigate stronainernetowa




ta fukcyjka, taka pętla,
Czeka aż IE sie opamięta.


Sub waitforIE(ie As InternetExplorerMedium)

With ie
Do While .Busy = True Or .ReadyState < 4
DoEvents
Loop
End With
End Sub





Przeglądarka - F12,
Class i Tag'ów kilkanaście,
Czas na pętle po obiektach
Sprawdźmy w kilu jej aspektach:


'petla po tagach
Dim ht As MSHTML.HTMLElementCollection
Dim HTMLdoc As HTMLDocument
Set HTMLdoc = ie.Document

For Each ht In HTMLdoc.getElementsByTagName("input")

If ht.outerHTML Like "*name=SUBMIT*" Then
ht.Click
waitforIE ie, 4
Exit For
End If

Next
'pętla po classach, aż zostanie spełniony warunek innertext (jak caption w formularzu)
Dim i As MSHTML.HTMLGenericElement
Dim itm As MSHTML.IHTMLElementCollection
Set itm = HTMLdoc.getElementsByClassName("item")
For Each i In itm
If Left(i.innerText, 3) = “EWP” Then
i.Click
Exit For
End If
Next





Jeśli obiekt ma ID,
Takie coś pomoże Ci:


Set slp = HTMLdoc.getElementById("btnOK")
Slp.click






Niżej podam subrytynę,
Która wchodzi na witrynę,
Poczty, założonej na WP
I loguje do niej się.

IE login wp


'napisana na szybkości subrutyna do logowania się na WP
>Sub loginTOwP()
Dim ie As New InternetExplorerMedium
Dim htmlDoc As IHTMLDocument
ie.Visible = True
ie.navigate "poczta.wp.pl"
''Call waitforIe(ie)
Set htmlDoc = ie.document
htmlDoc.getElementById("login").Value = "mójemil@wp.pl"
htmlDoc.getElementById("password").Value = "hasło"
htmlDoc.getElementById("btnSubmit").Click

End Sub



'’ta subrytyna w miarę dobrze obsłuży błąd automatyzacli
''"automation error/unspecified error"
''"object invoked disconnected from its client IE"

Sub loginTOwP2()
Dim ie As InternetExplorerMedium
Dim htmlDoc As IHTMLDocument
Dim targetURL As String

targetURL = "poczta.wp.pl"
On Error Resume Next
Set ie = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
ie.Visible = True
ie.navigate targetURL
''Call waitforIe(ie)
Set htmlDoc = ie.document
On Error GoTo 0
If htmlDoc Is Nothing Then
Set htmlDoc = zajdzIEprezURL("wp.pl").document
End If

htmlDoc.getElementById("login").Value = "mójemil@wp.pl"
htmlDoc.getElementById("password").Value = "hasło"
htmlDoc.getElementById("btnSubmit").Click

Set htmlDoc = Nothing
Set ie = Nothing
targetURL = Empty
End Sub
Function zajdzIEprezURL(targetURL As String)) As InternetExplorerMedium
Dim sh
Dim eachIE

'wyszukuję w oknach , po URL, odpowiedniego IE, w razie gdy normalna procedura zawodzi
'gdy znajdę - definiuję znaleziony IE jako InternetExplorerMedium i wychodzę

Set sh = New Shell32.Shell
For Each eachIE In sh.Windows
If InStr(1, eachIE.LocationURL, targetURL) Then
Set zajdzIEprezURL = eachIE
Exit Function
End If
Next eachIE

Set eachIE = Nothing
Set sh = Nothing
End Function