Blog

Postado em em 30 de abril de 2022

Rastrear Encomendas com VBA – Como Fazer o Rastreamento Automático

Hoje eu vou te ensinar a rastrear encomendas com VBA para automatizar seus trabalhos e buscas no site dos correios!

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

Rastrear Encomendas com VBA

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

Fala Impressionadores! Na aula de hoje eu quero te mostrar como fazer o rastreamento de encomendas automático com VBA.

Então você vai poder fazer o rastreamento automático no VBA de uma ou mais encomendas de uma vez só.

Para isso vamos utilizar o selenium no VBA que vai permitir a integração com a web para obter informações (webscraping com VBA).

E além disso vamos utilizar a estrutura de repetição For no VBA que serve para repetir uma ação várias vezes.

Com isso você pode procurar várias encomendas e registrar as informações dentro do Excel de forma totalmente automática!

E aí, bora aprender como navegar na web com VBA e trazer as informações das suas encomendas?

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

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).

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á.

Rastrear Encomendas com VBA

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

Rastrear Encomendas com VBA

Colocaremos a seguinte sub dentro dele:

Option Explicit

Sub ConsultaCodigo()

Dim navegadorChrome As New ChromeDriver
Dim linkPesquisa As String
Dim linha As Long, ultLin As Long

navegadorChrome.AddArgument ("--headless")

ultLin = Range("A1000000").End(xlUp).Row

For linha = 2 To ultLin

    linkPesquisa = "https://www.linkcorreios.com.br/?id=" & Cells(linha, 1).Value

    navegadorChrome.Get (linkPesquisa)

    Cells(linha, 2).Value = navegadorChrome.FindElementsByClass("card-header")(1).FindElementsByTag("li")(1).Text
   Cells(linha, 3).Value = navegadorChrome.FindElementsByClass("card-header")(1).FindElementsByTag("li")(2).Text

Next

Columns("A:C").AutoFit

navegadorChrome.Close
Set navegadorChrome = Nothing

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)
    • as variáveis “linha” e “ultLin” como números do tipo Long
    • Para entender melhor sobre os tipos de dados no VBA, visite esse link oficial
  • 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
  • Armazenar na variável “ultLin” a última linha preenchida da coluna A
  • Usar de uma estrutura de repetição do tipo For, que vai fazer ações da linha 2 até a linha dada pela variável “ultLin”
    • A variável “linkPesquisa” vai receber de fato o endereço do site a ser visitado, em formato de String (texto), do que for resultado do site “https://www.linkcorreios.com.br/?id=” e o que tiver na célula, na coluna A (1) na mesma linha que estiver a estrutura de repetição (entre 2 e “ultLin”)
    • Vamos visitar o site dado pela variável “linkPesquisa”, que é para onde vamos navegar de fato
    • Armazenar na célula da linha da estrutura de repetição, na coluna B (2) o texto correspondente ao elemento de índice 1 com tag “li” dos elementos de classe “card-header” de índice 1
    • Armazenar na célula da linha da estrutura de repetição, na coluna C (3) o texto correspondente ao elemento de índice 2 com tag “li” dos elementos de classe “card-header” de índice 1
    • E segue para a próxima linha da estrutura de repetição
  • Fazer o autoajuste das colunas de A a C da planilha
  • Fecharemos (quit, em inglês) o nosso navegadorChrome
  • Por convenção iremos “limpar” a memória da variável “navegadorChrome”
  • Se encerra o nosso código

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:

Conclusão de Como Rastrear Encomendas 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!