Jump to content

Recommended Posts

Postado

Boa Tarde Pessoal,

Quem analisa ações e FIIs sabe o quanto pode ser trabalhoso consultar, manualmente, indicadores financeiros em vários sites. Pensando nisso, desenvolvi uma função em VBA que permite buscar indicadores diretamente do Fundamentus, de forma automatizada, dentro do Excel.

O que essa solução faz?

Com apenas dois parâmetros - o ticker do ativo e o nome do indicador - a função:

  • Acessa automaticamente a página do ativo no Fundamentus
  • Varre as tabelas de indicadores
  • Identifica o indicador desejado (de forma flexível)
  • Retorna o valor diretamente para a célula do Excel

Requisitos de bibliotecas VBA

  • Microsoft XML (MSXML)
  • Microsoft HTML Object Library
 

Tudo isso usando VBA puro, sem complementos externos. Abaixo duas imagens de utilização e depois delas o código VBA para todos.

Ações  - exemplo

image.png.769b46e5dd2dff3600a972e5f1d388e1.png

 

FIIs  - exemplo

 image.png.f0c2103080a54b13158a67e94d15c439.png

VBA - código

Function BuscarIndicador(papel As String, nomeIndicador As String) As String

    Dim http As Object
    Dim html As Object
    Dim tds As Object
    Dim i As Long
    Dim url As String
    Dim textoCelula As String
    Dim indicadorProcurado As String

    ' Normaliza o indicador buscado
    indicadorProcurado = UCase(nomeIndicador)

    url = "https://www.fundamentus.com.br/detalhes.php?papel=" & papel

    ' Requisição HTTP
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.setRequestHeader "User-Agent", "Mozilla/5.0"
    http.send

    ' HTML
    Set html = CreateObject("HTMLFILE")
    html.body.innerHTML = http.responseText

    ' Todas as <td>
    Set tds = html.getElementsByTagName("td")

    For i = 0 To tds.Length - 2

        ' Limpa texto da célula
        textoCelula = tds(i).innerText
        textoCelula = Replace(textoCelula, Chr(160), " ")
        textoCelula = Trim(UCase(textoCelula))

        ' Comparação flexível
        If textoCelula Like "*" & indicadorProcurado & "*" Then
            BuscarIndicador = Trim(tds(i + 1).innerText)
            Exit Function
        End If

    Next i

    BuscarIndicador = "Não encontrado"

End Function

Espero que ajude e se quiser saber mais, sugerir adicionar algum outro indicador ou quiser um arquivo nativo comenta aqui.

 

  • Aí cê deu aula... 1

Crie uma conta ou entre para comentar

You need to be a member in order to leave a comment

Crie sua conta

Matricule-se na AUVP e faça parte da maior comunidade de influenciadores do Brasil.

Matricule-se na AUVP

Sign in

Already have an account? Sign in here.

Login
×
×
  • Criar novo...