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ę.
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ę.
'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