Blog

Postado em em 21 de agosto de 2021

Extrair Cotação de Moedas na WEB com VBA – [WEB Scraping]

Nessa aula eu vou te mostrar como você pode extrair cotação de moedas na web utilizando o VBA e deixar esse processo automático!

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:

Você já tentou obter cotações de moedas com VBA mas não sabia como? Hoje eu vou te mostrar como fazer isso utilizando API do Banco Central no VBA!

Vou te mostrar como extrair cotação de moedas na web com VBA utilizando essa API do Banco Central, pois ele já fornece essa API em um formato de link.

Isso vai facilitar muito o nosso web scraping com VBA, pois vamos poder fazer algumas alterações nesse link para deixa-lo automático inserindo as informações da moeda desejada e da data da cotação.

Agora vamos pra aula para aprender como obter a cotação de moedas com VBA utilizando o web scraping que é uma busca na internet!

Sub BuscarCotacoes()

Set objIE = CreateObject("InternetExplorer.Application")

'objIE.Visible = True


moedaCot = Cells(3, 2).Value
dataCot = Format(Cells(4, 2).Value, "mm-dd-yyyy")

linkCot = "https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoMoedaPeriodoFechamento(codigoMoeda='" _

        & moedaCot & "',dataInicialCotacao='" & dataCot & "',dataFinalCotacao='" & dataCot & "')?$select=cotacaoCompra"


objIE.Navigate linkCot


Do While objIE.busy And objIE.readyState <> "READYSTATE_COMPLETE"
   DoEvents
Loop

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

Cells(5, 2).Value = CDbl(objIE.Document.getElementsByTagName("td")(0).innerText)

objIE.Quit 

Set objIE = Nothing

End Sub

Comentários a respeito do código para ver como extrair cotação de moedas na web com VBA:

  • Vamos “setar” uma variável chamada “objIE” que representará o objeto do programa do Internet Explorer em si, que vai ser criado no começo
  • Vamos fazer com que o objIE fique visível, para que possamos ver o resultado do código nele, colocando sua propriedade Visible como True
  • Vamos armazenar na variável “moedaCot” o que estiver escrito na célula B3 da nossa planilha em Excel, que é a sigla da moeda com 3 letras escolhida: CAD, EUR, GBP, JPY ou USD
  • Vamos armazenar na variável “dataCot” o que estiver escrito na célula B4 da nossa planilha em Excel, que é a data escolhida para ser a referência de quando queremos buscar a cotação da moeda escolhida, já com o formato (função Format) de “mm-dd-yyyy”, onde m = mês, d = dia e y = ano.
  • Vamos armazenar na variável linkCot o link responsável por entrar no site do Banco Central com o objetivo de buscar essa cotação, já incluindo a data que queremos buscar, através da variável “dataCot” e a moeda que queremos buscar, com a variável “moedaCot”
  • Enfim vamos fazer o Internet Explorer de fato ir até a página (método Navigate) informada pelo link (linkCot), moedaCot e dataCot para pegarmos a moeda de cotação daquele exato dia informado na nossa planilha em Excel
  • Usaremos de Estrutura de repetição Do Until que vai conferir o estado de funcionamento do Internet Explorer. Enquanto ele estiver ocupado e com estado não “pronto”, o loop vai continuar funcionando, até que o seu estado esteja pronto e a página carregada por completo
  • Vamos fazer o Excel ficar congelado e não realizar nenhuma ação de código em VBA por 1 segundo para dar tempo de a página ser carregada por completo e dar tempo do código esperar isso acontecer para fazer o próximo passo (e evitar erros)
  • Assim, poderemos pegar o texto que estiver na tag “td” do nosso navegador aberto (objIE), converter para número através da função CDbl, porque ele retorna um texto por padrão, e registrar na célula B5 do Excel
  • Em seguida aplicaremos o método Quit na variável que representa o Word (objIE) para que ele seja fechado
  • Por boas práticas vamos esvaziar a variável “objIE” (Nothing) para que ela não fique armazenada o tempo inteiro na memória do computador enquanto o arquivo está aberto no Excel
  • Será gerada uma mensagem ao final do código (MsgBox) informando que a procuração foi gerada com sucesso
  • Se encerra o código


OBS:
Para entender melhor como lidar com as variáveis ou mais detalhes sobre o comando Set no VBA, recomendamos esse outro post aqui.

Conclusão de Como Extrair Cotação de Moedas na Web

Essa é mais uma aula de macros VBA que vai te ajudar muito a automatizar seus processos dentro do Excel para aumentar sua produtividade.

Dessa forma teremos uma macro para automatizar cotações de moedas onde você pode utilizar apenas clicando em um botão, então além de simples fica muito fácil de utilizar depois.

Utilizando uma integração com o Internet Explorer, fazendo um Web Scraping conseguimos fazer isso por uma API específica de link.

Fique ligado no nosso canal do Youtube para mais conteúdo de Excel e VBA toda semana!

Valeu, pessoal! Até o próximo post!

Hashtag Treinamentos

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


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador