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 fórum Julio Battisti, o qual participo com alguma frequência, além de ter muitos colegas por lá que me auxiliaram na criação do código.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 JB", Default:="login", Type:=2) MyPass = Application.InputBox("Por favor entre com a senha", "Forum JB", Default:="Password", Type:=2) If MyLogin = "" Or MyPass = "" Then GoTo redo Set ie = New InternetExplorer ie.Visible = True ie.Navigate "http://www.juliobattisti.com.br/forum/login_user.asp" Do Until ie.ReadyState = READYSTATE_COMPLETE Loop ie.document.all("name").innerText = MyLogin ie.document.all("password").innerText = MyPass ie.document.all("Submit").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:
1 2 3 4 5 6 | 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 |
Bom proveito!
Tomás Vásquez
www.tomasvasquez.com.br


42 Convidados
1 Bot
