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
FIIs - exemplo
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.