VBA – Interagindo com o objeto Internet Explorer

É, fazemos tanta coisa pela internet que fica difícil imagina um dia sem poder acessá-la. Teve até gente passando mal no dia do “Apagão da Internet” ocorrido a poucas semanas.

Bom, baboseiras a parte, surgindo de mais uma das necessidades bizarras que os sistemas nos propõem, precisei uma vez preencher um formulário web automaticamente com alguns dados que constavam em planilhas ou até mesmo em um BD no Access.

Pois bem, já tinha feito algumas brincareiras com o objeto InternetExplorer referenciado através do VBA, mas até atenção se resumia a abertura e navegação para uma determinada página. Felizmente foi fácil manipular o código HTML dentro do objeto de tal forma que fosse possível o preenchimento dos campos e por fim submeter a página.

Para facilitar a apresentação de um exemplo, colocarei um código que faz autenticação na página do meu fórum, o Fórum Tomás Vásquez.

O código abre uma instância do Internet Explorer, navega até a página de Login, preenche os campos conforme valores informados em objetos InputBox e submete a página.

Sub x()
    Dim ie As InternetExplorer
    Dim C
    Dim ULogin As Boolean, ieForm
    Dim MyPass As String, MyLogin As String
redo:
    MyLogin = Application.InputBox("Por Favor entre com o Login", "Forum Tomás Vásquez", Default:="login", Type:=2)
    MyPass = Application.InputBox("Por favor entre com a senha", "Forum Tomás Vásquez", Default:="Password", Type:=2)
    If MyLogin = "" Or MyPass = "" Then GoTo redo
    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate "http://www.tomasvasquez.com.br/forum/ucp.php?mode=login"
 
    Do Until ie.ReadyState = READYSTATE_COMPLETE
    Loop
 
    ie.Document.all("username").innerText = MyLogin
    ie.Document.all("password").innerText = MyPass
    'obtém o forma a qual o controle de login pertence para submetê-lo
    ie.Document.all("username").form.all("login").Click
 
    If ULogin = False Then MsgBox "Usuário logado"
    Set ie = Nothing
End Sub

Importante: É bom lembrar que para que o código funcione como está, é preciso adicionar um referência ao Microsoft Internet Controls.

Para auxiliar, a seguinte função adiciona automaticamente a referência necessária:

Sub Referencia()
    Dim ObRef
    On Error Resume Next
    ' Adiciona Controles da Net
    ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub

Download da planilha

VBA.IE.Login.xlsm.zip
Bom proveito!

Comentários

comentários