Boa Tarde Amigos, sou iniciante em VBA.
Porém estou criando uma macro que faça o seguinte:
Tenho uma planilha com 1000 telefones, gostaria de fazer uma consulta neste site http://www.qualoperadora.net/ com cada linha da planilha, depois com isto eu pegaria a informação retornada do site e escreveria na coluna ao lado do telefone.
Até agora consegui fazer isto .
Public Sub ExemploBuscaGoogle()
On Error Resume Next
Dim i As Long
Dim IE As Object
Dim objElement As Object
Dim objCollection As Object
quebra = Chr(13) & Chr(10)
Dim iArq As Long
iArq = FreeFile
Open "C:BrunoTeste.txt" For Output As iArq
Print #iArq, quebra
Print #iArq, "texto: simples"
Close #iArq
' Cria instância do IE
Set IE = CreateObject("InternetExplorer.Application")
' Define o endereço a ser carregado
IE.navigate ("www.qualoperadora.net")
' Define se a janela do IE será ou não exibida
IE.Visible = True
' Espera carregar. A espera aqui está definida para 1 segundo,
' mas pode ser ajustada dependendo da necessidade.
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
' Busca campos tipo input, uma vez que queremos acessar o campo de busca.
' Sabemos que o campo é tipo input porque analisamos o código HTML da página do Google.
' O método getElementByTagName retorna todas as TAGs HTML da página carregada com o nome desejado.
Set objCollection = IE.document.getElementsByTagName("input")
' Varre os inputs do HTML procurando pelos elementos desejados
' Queremos encontrar o elemento input com name = "q"
' Uso o while aqui mas poderia usar o 'for each'
i = 0
While i < objCollection.Length
' "q" é o nome do campo de busca, como visto no código HTML
If objCollection(i).Name = "telefone" Then
' Preenche o campo de busca com o que queremos
objCollection(i).Value = "11973482468"
End If
i = i + 1
Wend
' Após preenchermos o campo de pesquisa mandamos um 'enter' para o sistema.
' No método SendKeys o 'enter' é representado pelo símbolo ~
Application.SendKeys ("~")
' Esperamos novamente o IE carregar a página.
' Note que o codigo aqui realiza uma espera de 1 segundo
' mesmo sem verificar se o IE está ocupado.
' Isso é uma boa estratégia pois diversos sites passam por
' mais de uma janela após submeter informações
' a um formulário. Então a espera tenta garantir que a janela
' final esteja carregada.
Application.Wait DateAdd("s", 1, Now)
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
' Agora temos que buscar o primeiro link do primeiro resultado.
' Novamente temos que analisar o HTML, agora da página de resultados.
' Buscamos as tags 'li' onde class = 'g' da página, pois é onde estão os resultados.
' Novamente, sabemos pela análise do HTML.
Set objCollection2 = IE.document.getElementsByTagName("li")
' Dentre as tags 'li' buscamos a primeira com classe 'g'
For Each elemento In objCollection2
' "q" é o nome do campo de busca, como visto no código HTML
If elemento.classname = "g" Then
' Mostra a msgbox com o texto do primeiro resultado
MsgBox elemento.innertext
Exit For
End If
Next
' Fecha a instância do IE
End Sub
Postado : 11/07/2014 1:27 pm