Objetivo: Demonstrar como preencher um formulário da web via código VBA Excel.
Este artigo foi criado para auxiliar o nosso amigo Djanes, que participa do nosso Fórum Guia do Excel, veja a dúvida dele em: http://guiadoexcel.com.br/forum/viewtopic.php?f=14&t=19.
A dúvida consiste em a partir de uma lista de dados com UF e cidade, buscar no site dos correios os dados de faixa de CEP, veja também como fazer rastreamento correio no Excel.
Para esta ação tive ajuda do amigo Jardel Novaes para a criação do código que está comentado logo abaixo.
Este código fonte teve também uma parte baseada nas explicações do artigo do nosso amigo Tomaz Vasquez http://www.tomasvasquez.com.br/blog/microsoft-office/vba-interagindo-com-o-objeto-internet-explorer, ao qual também agradeço.
Para utilizar a planilha de exemplo de como interagir com controles da internet com VBA, basta clicar no botão Processar e aguardar a finalização do preenchimento da planilha com as faixas de CEP.
O código irá abrir o internet explorer e realizar as consultas preenchendo os dados da planilha.
Sem mais delongas, o código fonte segue abaixo totalmente comentado e ao final do artigo um link para você realizar o download da planilha no exemplo.
Aproveito a oportunidade para convidá-lo a participar do nosso fórum ajudando nas dúvidas dos colegas e postando suas próprias dúvidas: Fórum Guia do Excel.
'Inclui referência ao Microsoft Internet Controls Sub lReferenciaIE() Dim ObRef On Error Resume Next ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1 End Sub Sub lsPesquisarCEPFaixa() 'Inclui a referência se não houver lReferenciaIE Dim IE As InternetExplorer Dim lCidade As String Dim lUF As String Dim lUltimaLinhaAtiva As Long Dim lContador As Long 'Identifica a última célula ativa da lista lUltimaLinhaAtiva = Worksheets("Plan1").Cells(Worksheets("Plan1").Rows.Count, 1).End(xlUp).Row 'Cria um objeto Internet Explorer Set IE = New InternetExplorer 'Torna o objeto visível IE.Visible = True 'Faz um loop por todas as linhas da planilha For lContador = 2 To lUltimaLinhaAtiva 'Navega ao site dos correios IE.Navigate "http://www.buscacep.correios.com.br/servicos/dnec/menuAction.do?Metodo=menuFaixaCep" 'Identifica se a página já foi totalmente carregada While IE.ReadyState <> READYSTATE_COMPLETE Wend 'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário 'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade. 'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem 'mais rápida a execução. sng = Timer Do While sng + 3 > Timer Loop 'Carrega os dados de cidade e UF que serão preenchidos na página lCidade = Range("B" & lContador).Value lUF = Range("A" & lContador).Value 'Carrega os dados de cidade e UF na página e submente os dados do formulário IE.Document.all("Localidade").innertext = lCidade IE.Document.all("UF").Value = lUF IE.Document.forms("Geral").submit 'Identifica se a página já foi totalmente carregada While IE.ReadyState <> READYSTATE_COMPLETE Wend 'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário 'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade. 'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem 'mais rápida a execução. sng = Timer Do While sng + 3 > Timer Loop 'Faz um loop pelos objetos do tipo table na página e procura pelo campo Faixa(s) de CEP: preenchido. 'Em seguida busca pela segunda coluna da linha de faixa de CEP e armazena esta informação diretamente na coluna C da linha 'da planilha For Each i In IE.Document.body.getElementsByTagName("table") If InStr(i.innertext, "Faixa(s) de CEP:") > 0 Then For Each l In i.getElementsByTagName("tr") If InStr(l.innertext, lCidade) Then Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innertext End If Next l End If Next i Next lContador MsgBox "Concluído!" End Sub
Veja neste artigo como copiar os procedimentos acima e incluir na sua pasta pessoal de Macros neste artigo: http://guiadoexcel.com.br/habilitando-a-guia-desenvolvedor-e-copiando-procedimentos-vba-sub-da-internet
Baixe a planilhaAbraço
Marcos Rieper