Blog

Postado em em 23 de abril de 2022

Consulta de CEP Com VBA no Site dos Correios

Na aula de hoje você vai aprender como fazer uma consulta de CEP com VBA no site dos correios para automatizar seu trabalho!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Hoje eu quero te mostrar como consultar CEP no Excel (como consultar CEP com VBA) para que você possa automatizar esse processo!

Agora você vai ter a possibilidade de consulta de CEP no Excel utilizando o selenium que vai fazer a comunicação do VBA com a web e trazer essas informações!

Além disso temos que utilizar um webdriver que auxilia nessa conexão do VBA com o seu navegador. Então basicamente o que vamos fazer é um webscraping com VBA.

Isso quer dizer que vamos buscar informações da web e trazer para dentro do Excel de forma automática para que você não precise perder tempo fazendo isso de forma manual.

Então além de te mostrar como pegar informações da web com VBA eu vou te mostrar também como tratar erros no VBA com o On Error GoTo.

Esse tratamento é muito importante até para evitar que o seu código para de executar quando um erro for encontrado!

Links para download

Em um primeiro momento precisaremos baixar para o computador a biblioteca de comandos, objetos e métodos do Selenium.

Elas devem ser instaladas no seu computador com o instalador do programa, normalmente.

Esses serão usados e acessados para que o VBA faça essa integração com os outros navegadores que não sejam o Internet Explorer (integração nativa).

Logo após você terá, com o VBA aberto, que:

  • Ir na guia Ferramentas
  • Referências…
  • Marcar a caixinha correspondente ao “Selenium Type Library” (como na foto abaixo)
  • OK
Selenium
Selenium

Pronto, a partir daqui sua biblioteca Selenium estará ativada para uso em seu VBA.

Além da biblioteca de comandos do Selenium, nós precisaremos fazer o download dos drivers dos navegadores extras (não nativos – Opera, Mozzilla, Google Chrome).

Consulta de CEP Com VBA
Webdriver

Esses drivers serão acessados e utilizados justamente pela biblioteca instalada o Selenium, para que o VBA possa fazer a comunicação/integração dos códigos e fazer ações nos navegadores.

Teremos que instalar esses drivers no local específico do computador onde estará instalado o Selenium. Abaixo mostramos um exemplo de onde ele pode/deve estar instalado:

  • C:UsersDiego AmorimAppDataLocalSeleniumBasic


OBS:
cada computador tem um caminho específico.

Inserindo um Módulo no VBA

Para criar um código dentro de um módulo, precisamos primeiramente abrir o ambiente de VBA, a partir do atalho do teclado Alt(+Fn)+F11.

Como não temos nenhum módulo destinado ao tema da aula de hoje, e por questão de organização, vamos criar um módulo à parte.

Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

Por padrão ele terá o nome de “Módulo 1”.

Consulta de CEP Com VBA
Buscar dados da web com Excel

Colocaremos a seguinte sub dentro dele:

Option Explicit

Sub ConsultaCEP()

Dim navegadorChrome As New ChromeDriver
Dim linkPesquisa As String
Dim tabelaInfo As Object

linkPesquisa = "https://buscacepinter.correios.com.br/app/endereco/index.php"

navegadorChrome.AddArgument ("--headless")

navegadorChrome.Get (linkPesquisa)

navegadorChrome.FindElementById("endereco").SendKeys (Range("B2").Value)
navegadorChrome.FindElementById("btn_pesquisar").Click

'PassarErro:
'Set tabelaInfo = navegadorChrome.FindElementsByTag("td")
'
'On Error GoTo Erro:
'Range("B4").Value = tabelaInfo(1).Attribute("innerText")
'Range("B5").Value = tabelaInfo(2).Attribute("innerText")
'Range("B6").Value = tabelaInfo(3).Attribute("innerText")
'On Error GoTo 0


PassarErro:
On Error GoTo Erro
Range("B4").Value = navegadorChrome.FindElementsByTag("td")(1).Attribute("innerText")
Range("B5").Value = navegadorChrome.FindElementsByTag("td")(2).Attribute("innerText")
Range("B6").Value = navegadorChrome.FindElementsByTag("td")(3).Attribute("innerText")
On Error GoTo 0

Range("A:B").Columns.AutoFit

navegadorChrome.Quit

Set navegadorChrome = Nothing
Set tabelaInfo = Nothing

Exit Sub

Erro:
   Application.Wait (Now + TimeValue("00:00:01"))
   Resume PassarErro

End Sub

Explicação do código acima:

  • A primeira linha diz que que todas as variáveis utilizadas no código serão obrigatoriamente declaradas. Observe que isso é algo que é colocado fora da estrutura das nossas subs (vem antes do começo da Sub, de fato)
  • Vamos dimensionar:
    • A variável “navegadorChrome” como um objeto que representa uma nova instância do Google Chrome (através do Chrome Driver)
    • a variável “linkPesquisa” como como uma String (texto)
    • a variável “tabelaInfo” como um Object (objeto)
    • Para entender melhor sobre os tipos de dados no VBA, visite esse link oficial
  • A variável “linkPesquisa” vai receber de fato o endereço do site a ser visitado, em formato de String (texto)
  • Para o “navegadorChrome” criado vamos adicionar o argumento “sem cabeça”. Ou seja, ao ser aberto, o navegador não vai ser mostrado, por opção nossa
  • Vamos visitar o site dado pela variável “linkPesquisa”, que é para onde vamos navegar de fato
  • Passar para o elemento “endereço” do “navegadorChrome” o valor que estiver escrito na célula B2 da planilha, que é de fato o CEP
  • Clicar no elemento de ID “btn_pesquisar”
  • Armazenar na célula B4 o texto correspondente ao elemento com índice 1 de tag “td” de todos os elementos “tds”
  • Armazenar na célula B5 o texto correspondente ao elemento com índice 2 de tag “td” de todos os elementos “tds”
  • Armazenar na célula B6 o texto correspondente ao elemento com índice 3 de tag “td” de todos os elementos “tds”
  • Caso haja algum erro, nesse caso, eventualmente acontecesse por não carregamento de página à tempo, e não retornar as respostas que queremos buscar com o código, o código vai forçar a ir para o “ponto” “Erro:”, no final, pulando várias linhas. Dessa forma, vai executar o que está logo depois desse “ponto”: esperar mais 1 segundo, e tentar novamente pegar as informações
  • O que pode acontecer aqui e explicado no vídeo é que se após o clique no botão de Buscar, se a página não carregar a tempo do código pegar as informações (e elas não existirem), haverá erro, contornado pelo nosso tratamento de erros no VBA
  • Fazer o autoajuste da colunas A e B da planilha
  • Fecharemos (quit, em inglês) o nosso navegadorChrome
  • Por convenção iremos “limpar” a memória das variáveis “navegadorChrome” e “tabelaInfo”
  • Se encerra o nosso código com a instrução Exit Sub, para que ela não vá para a parte de baixo, que é onde tratamos o erro, e forçaria um loop eterno.

Ao final do código, teremos os valores pesquisados nas células B4, B5 e B6, adquiridos a partir da visita ao site. Veja abaixo:

Consulta de CEP Com VBA
Como consultar CEP no Excel

Conclusão da Consulta de CEP Com VBA

Nessa aula você lidou com:

Até a próxima, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel e VBA toda semana! Abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Vire uma referência no Mercado de Trabalho por causa do Power BI!

Quer saber como? Inscreva-se no Intensivão de Power BI! É gratuito!