From Excel we can create can load an explorer instance (inside an userform for example). From there, one can reach any site, and more interesting, if there is a login filter, username and password can be fetch and go forward.
But there can be some caveats, for example GMail site that has a two stages login, so it has to be evaluated twice where to fill data between complete login.
Place a Microsoft Internet Controls (also Microsoft WebBrowser) -refered to ieframe.dll-, as is not in the default controls palette, you have to search for it in “Additional Controls”. For a site like GMail it Will complain a lot, as it old browser technology, but it’ll go to the end.
For the second stage, the function WebBrowser1_DocumentComplete, will analyse that first stage has been succesfully surpassed.
Add two textboxes and rename then to txtUserName and txtPassword, add a button named cmdAction. For instance, you can add a textbox and name it txtURL and finally a button cmdGo to navigate to desired site.
Paste the following code in the userform, and browse!
Option Explicit
Private bWebChange As Boolean
'Private Sub txtURL_Change()
'End Sub
Private Sub txtURL_Enter()
Call cmdGo_Click
End Sub
Private Sub UserForm_Initialize()
'It's not the same to go from different webbrowser, site can change for each browser...
'Is is a multipage site?
With Me
.txtUsername.Text = ""
.txtPassword.Text = ""
End With
End Sub
Private Sub cmdGo_Click()
With Me
If .txtURL.Text Like "http*//*" Then
.txtURL.Text = .txtURL.Text
ElseIf .txtURL.Text Like "www*" Then
.txtURL.Text = "http://" & .txtURL.Text
Else
'count dot chars
.txtURL.Text = "http://www." & .txtURL.Text
End If
.WebBrowser1.Navigate (.txtURL.Text)
End With
End Sub
Private Sub cmdAction_Click()
' Always get "name" property
With Me
With .WebBrowser1
If Not bWebChange Then Exit Sub 'Wait for completion
' Go to site and search <input for input box... get "name" property
' Go to site and search "*button*" for buttons ...
.Document.all("Email").Value = Me.txtUsername.Text
bWebChange = False
.Document.all("signIn").Click
If bWebChange Then
'Wait until complete... go to next page
.Document.all("Passwd").Value = Me.txtPassword.Text
.Document.all("signIn").Click
End If
End With
End With
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If pDisp Is WebBrowser1.Application Then
Debug.Print "Complete"
bWebChange = True
MsgBox "Complete"
'
' Now you can poke around the Document Object
'
End If
End Sub
[/sourcecode]