Macros no Excel: Aprenda coletar o P/VP e Dividend Yield de Fundos Imobiliarios usando Técnica de Scraping.

Fernando Neves, Ph.D.

Hoje vamos falar de um assunto mais técnico, mas que é de interesse geral. Pode ser que você não trabalhe com finanças, mas precisa decidir de forma rápida sobre seus investimentos, então você decide usar uma das ferramentas mais conhecidas para fazer análise de dados de forma rápida: O Excel.

Neste post vamos focar em obter dados sobre fundos imobiliários, mas se você já tentou fazer isso usando as ferramentas nativas do Excel, deve ter percebido que o Excel não busca todos os dados do ativo. Vamos então ao básico primeiro e caso seu objetivo seja apenas buscar o preço atual do ativo você pode rapidamente obtê-lo usando o menu dados ou Data. Neste post usaremos o Excel em Inglês, então o passo a passo é o seguinte:

Posicione o seu cursor na célula onde deseja entrar o ticket do ativo e digite o ticket conforme a figura a seguir. Neste exemplo vamos usar o ticket do título imobiliário HGLG11.

A seguir, clique no ícone AÇÕES, ou STOCKS e a célula será convertida em um formato que faz a busca online. A seguir, posicione o cursor em uma célula vazia, digite “=” e então posicione o cursor sobre a célula que contém o nome do ticket, já com a nova formatação que foi gerada após ter clicado no ícone STOCKS. Você verá várias opções conforme a figura a seguir.

Adicionando o Preço

Você verá várias opções tais como preço, nome do ticket, alta ou baixa das últimas 52 semanas, preços de fechamento, etc. Para obter o preço, apenas escolha preço (ou price) e dê enter. Você terá na célula o último preço do ticket e a formatação ficará no caso do nosso exemplo: =A1.Price ou =A1.Preço.

Criando a Macro para obter P/VP e DY

No entanto, para decidir a compra e saber se tenho uma boa oportunidade uso outros parâmetros como por exemplo o dividend yield (DY) e o preço sobre o valor patrimonial (P/VP) que não aparecem na lista do excel. Para resolver isso, faremos uma macro que busca estes valores em sites especializados como por exemplo o Investidor10 .

Primeiro Passo: Ativar a Função Desenvolvedor do Excel

Verifique se seu excel está habilitado para macros e se aparece no seu menu a opção Desenvolvedor ou Developer.

Excel- Ativando a opção desenvolvedor.

Para ativar a opção Desenvolvedor (Developer) no Excel, siga os passos abaixo:

  1. Abra o aplicativo Excel em seu computador.
  2. Clique na guia “Arquivo” no canto superior esquerdo do Excel.
  3. Selecione “Opções” ou “Options” para abrir a janela de opções do Excel. Pode ser que seja necessário clicar em “Mais” ou “More” para que ela apareça.
  4. Na janela de opções, clique em “Personalizar Faixa de Opções” ou “Custumize Ribbon” no menu à esquerda.
  5. Na coluna da direita, procure e marque a caixa “Desenvolvedor” ou “Developer”. Você encontrará essa opção listada entre as outras guias como “Início”, “Inserir”, etc.
  6. Clique em “OK” para confirmar e fechar a janela de opções.

Após seguir esses passos, a guia “Desenvolvedor” será adicionada à sua Faixa de Opções, e você poderá acessar as ferramentas fornecidas nela, como a gravação de Macros e o Editor de Visual Basic for Applications (VBA).

Segundo Passo: Criando a Planilha Base

Crie uma coluna com os nomes dos tickets que deseja coletar. No nosso exemplo, a coluna A traz os tickets. Então defina as colunas que receberão os dados de P/VP e DY conforme figura a seguir.

Terceiro Passo: Criando a Macro

Agora vamos escrever a Macro que irá acessar a página na internet, obter os dados e preencher as colunas B e C da planilha. Para abrir o editor de macros do Excel siga os passos a seguir:


Abra o Excel
 e o arquivo onde você deseja adicionar a macro.

Pressione Alt + F11 para abrir o Editor do VBA.

No menu, clique em Inserir > Módulo. Isso adicionará um novo módulo ao projeto VBA.

Quarto Passo: Escrevendo o Código

Escreva ou cole o código VBA na janela do módulo que você acabou de inserir. No nosso caso iremos buscar os dados no site Investidor 10. Usaremos o código a seguir:

End Sub

Quinto Passo: Executando a Macro

Para executar a macro, pressione F5 ou vá para o menu Executar > Executar Sub/UserForm.

Se você não tiver habilitado macros no seu Excel, talvez seja necessário alterar as configurações de segurança. Para fazer isso, vá para Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade > Configurações de Macro e escolha a opção que permita a execução de macros.

Ao fazer isso o código preencherá para você todos os dados automaticamente. É importante dizer que estes dados não serão atualizados automaticamente. Cad vez que precise atualizar os dados rode novamente a macro.

Customizando o Código

Caso precise customizar para buscar outros dados, ou buscar em outro site ou buscar outras informações basta alterar algumas linhas do coódigo.

O site está definido no endereço de URL e a parte do código que faz isso é:

Construa a URL

A parte do código que busca o P/VP é dada por:

‘ Busque o valor P/VP utilizando o seletor CSS fornecido

Para encontrar o que deverá ser inserido entre as aspas neste comando, basta ir ao site e entrar na página onde se encontra o dado. Então clique copm o botão direito e clique em inspecionar conforme figura a seguir:

Isso abrirá uma aba no seu navegador com algumas informações sobre a página. Veja na figura a seguir que do lado direito foi aberta uma janela contendo o valor de P/VP que está marcado em amarelo.

Na Figura a seguir mostramos com maior detalhe. Agora basta clicar neste valor com o botão direito e escolher a opção copiar seletor

Agora basta substituir entre as aspas e o código irá buscar o dado especificado para cada ticket. Perceba que em nosso código temos dois comandos. Um para o P/VP e outro para o DY:

Caso você precise adicionar outros dados como por exemplo a liquidez diária ou a cotação deverá adicionar outras linhas de código para cada dado que se queira obter do site. Será preciso também criar as variáveis que receberão os dados. Por exemplo: valorLiquidez, ou valorCotação e assim sucessivamente.

É claro que também é preciso adicionar ao código quais serão as colunas que receberão os dados obtidos. A linha de código que faz isso é:

‘ Defina o valor de DY na célula correspondente, começando em C3

Então basta adicionar outras linhas atribuindo a cada célula das demais colunas como, por exemplo D, E, etc. os valores obtidos como por exemplo:

ws.Cells(i,”D”).Value = valorLiquidez.

Espero ter contribuído para seu conhecimento. Se gostou deste post divulgue nosso site!