Como Importar Cotações da B3 no Microsoft Excel
Aprenda a criar planilhas profissionais com cotações automáticas da B3 usando Power Query e VBA.
Por Que Excel para Investimentos?
O Microsoft Excel continua sendo uma das ferramentas mais populares para acompanhar investimentos. Com a integração da brapi.dev, você pode:
- Importar cotações automáticas da B3
- Atualizar dados com um clique
- Criar dashboards profissionais
- Fazer análises avançadas
- Integrar com Power BI
Método 1: Power Query (Recomendado)
O Power Query permite importar dados JSON sem programação.
Passo a Passo
- Abra o Excel e vá para a guia Dados
- Clique em Obter Dados > De Outras Fontes > Da Web
- Insira a URL:
https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN
- Clique em OK
- O Power Query abrirá mostrando os dados JSON
- Clique em Converter > Para Tabela
- Expanda a coluna results clicando na seta dupla
- Selecione os campos que deseja (symbol, regularMarketPrice, etc.)
- Clique em Fechar e Carregar
Múltiplos Ativos
Para importar várias ações de uma vez:
https://brapi.dev/api/quote/PETR4,VALE3,ITUB4,BBDC4?token=SEU_TOKEN
Atualização Automática
- Clique com botão direito na tabela
- Selecione Atualizar
- Ou vá em Consultas e Conexões > Propriedades da Conexão
- Configure atualização automática:
- ✅ Atualizar dados ao abrir o arquivo
- ✅ Atualizar dados a cada X minutos
Exemplo de Estrutura
Após importar, sua tabela ficará assim:
symbol | shortName | regularMarketPrice | regularMarketChangePercent | currency |
---|---|---|---|---|
PETR4 | PETROBRAS PN | 38.45 | 2.15 | BRL |
VALE3 | VALE ON | 62.30 | -0.85 | BRL |
Método 2: VBA Avançado
Para mais controle, use VBA (Visual Basic for Applications).
Código VBA Completo
Pressione Alt + F11
para abrir o editor VBA e cole:
' Requer biblioteca VBA-JSON: https://github.com/VBA-tools/VBA-JSON
Function GetBrapiQuote(ticker As String, Optional field As String = "regularMarketPrice") As Variant
On Error GoTo ErrorHandler
Dim http As Object
Dim json As Object
Dim token As String
Dim url As String
' Configure seu token aqui ou em uma célula
token = ThisWorkbook.Sheets("Config").Range("A1").Value
' Monta URL
url = "https://brapi.dev/api/quote/" & ticker & "?token=" & token
' Faz requisição
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
' Verifica resposta
If http.Status = 200 Then
Set json = JsonConverter.ParseJson(http.responseText)
' Retorna campo solicitado
If field = "regularMarketPrice" Then
GetBrapiQuote = json("results")(1)("regularMarketPrice")
ElseIf field = "symbol" Then
GetBrapiQuote = json("results")(1)("symbol")
ElseIf field = "shortName" Then
GetBrapiQuote = json("results")(1)("shortName")
ElseIf field = "regularMarketChangePercent" Then
GetBrapiQuote = json("results")(1)("regularMarketChangePercent")
Else
GetBrapiQuote = json("results")(1)(field)
End If
Else
GetBrapiQuote = "Erro HTTP " & http.Status
End If
Exit Function
ErrorHandler:
GetBrapiQuote = "Erro: " & Err.Description
End Function
' Sub para atualizar todas as cotações
Sub AtualizarCotacoes()
Application.CalculateFull
MsgBox "Cotações atualizadas!", vbInformation
End Sub
Biblioteca VBA-JSON
- Baixe VBA-JSON
- Importe o arquivo
JsonConverter.bas
no seu projeto VBA - Em Ferramentas > Referências, ative "Microsoft Scripting Runtime"
Uso das Funções VBA
Na planilha:
=GetBrapiQuote("PETR4"; "regularMarketPrice")
=GetBrapiQuote("PETR4"; "shortName")
=GetBrapiQuote("PETR4"; "regularMarketChangePercent")
Estrutura Recomendada
Aba "Config":
A | B |
---|---|
SEU_TOKEN_AQUI | Token da API |
Aba "Cotações":
A (Ticker) | B (Nome) | C (Preço) | D (Variação %) |
---|---|---|---|
PETR4 | =GetBrapiQuote(A2;"shortName") | =GetBrapiQuote(A2;"regularMarketPrice") | =GetBrapiQuote(A2;"regularMarketChangePercent") |
Método 3: Fórmulas Dinâmicas (Excel 365)
Se você tem Excel 365, pode usar fórmulas dinâmicas:
=FILTERXML(
WEBSERVICE("https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN"),
"//regularMarketPrice"
)
Nota: Esta abordagem é limitada pois a API retorna JSON, não XML.
Dashboard Profissional
Estrutura de Abas
- Config - Token e configurações
- Cotações - Dados brutos atualizados
- Dashboard - Visualizações e gráficos
- Histórico - Registro de preços diários
Formatação Condicional
Para destacar variações:
- Selecione a coluna de variação percentual
- Formatação Condicional > Nova Regra
- Configure:
- Verde se > 0
- Vermelho se < 0
Gráficos Recomendados
- Gráfico de Pizza: Distribuição da carteira
- Gráfico de Barras: Performance por ativo
- Gráfico de Linha: Evolução histórica
Botão de Atualização
Adicione um botão para atualizar dados:
- Guia Desenvolvedor > Inserir > Botão
- Desenhe o botão na planilha
- Atribua a macro
AtualizarCotacoes
Código do botão:
Sub AtualizarTudo()
' Atualiza Power Query
ActiveWorkbook.RefreshAll
' Atualiza fórmulas VBA
Application.CalculateFull
' Atualiza timestamp
ThisWorkbook.Sheets("Dashboard").Range("A1").Value = "Última atualização: " & Now()
MsgBox "Dados atualizados!", vbInformation
End Sub
Salvando Histórico Automático
Sub SalvarHistorico()
Dim wsOrigem As Worksheet
Dim wsHistorico As Worksheet
Dim ultimaLinha As Long
Set wsOrigem = ThisWorkbook.Sheets("Cotações")
Set wsHistorico = ThisWorkbook.Sheets("Histórico")
ultimaLinha = wsHistorico.Cells(Rows.Count, 1).End(xlUp).Row + 1
' Copia dados com timestamp
wsHistorico.Cells(ultimaLinha, 1).Value = Now()
wsOrigem.Range("A2:D10").Copy wsHistorico.Cells(ultimaLinha, 2)
MsgBox "Histórico salvo!", vbInformation
End Sub
Integração com Power BI
- No Power BI Desktop, clique em Obter Dados > Excel
- Selecione sua planilha Excel
- Importe as tabelas desejadas
- Configure atualização automática no Power BI Service
Dicas de Performance
1. Use Cache
Evite atualizar a cada célula recalculada:
' No início da função
Static cache As Object
Static cacheTime As Date
If DateDiff("s", cacheTime, Now()) < 60 Then
' Retorna do cache se menos de 60 segundos
GetBrapiQuote = cache(ticker & "_" & field)
Exit Function
End If
2. Desative Cálculo Automático
Para planilhas grandes:
- Fórmulas > Opções de Cálculo > Manual
- Use Ctrl+Alt+F9 para recalcular quando necessário
3. Use Tabelas
Converta ranges em tabelas (Ctrl+T) para melhor performance.
Exemplos Práticos
Carteira de Investimentos
Ticker | Quantidade | Preço Médio | Preço Atual | Lucro/Prejuízo | % |
---|---|---|---|---|---|
PETR4 | 100 | 35.00 | =GetBrapiQuote(A2) | =(D2-C2)*B2 | =(D2-C2)/C2 |
Monitor de Mercado
Configure cores automáticas:
- 🟢 Verde: Variação > 2%
- 🟡 Amarelo: Variação entre -2% e 2%
- 🔴 Vermelho: Variação < -2%
Troubleshooting
Erro: "Não é possível se conectar"
- Verifique sua conexão com internet
- Confirme que o token está correto
Erro: "Método não encontrado"
- Instale a biblioteca VBA-JSON
- Ative "Microsoft Scripting Runtime"
Dados não atualizam
- Verifique se atualização automática está habilitada
- Clique em "Atualizar Tudo" manualmente
Comparação: Excel vs Google Sheets
Recurso | Excel | Google Sheets |
---|---|---|
Power Query | ✅ Sim | ❌ Não |
VBA | ✅ Sim | ❌ Apps Script |
Offline | ✅ Sim | ❌ Não |
Colaboração | ⚠️ Limitado | ✅ Excelente |
Gratuito | ❌ Pago | ✅ Sim |
Próximos Passos
Conclusão
O Excel é uma ferramenta poderosa para acompanhar investimentos. Com Power Query e VBA, você pode criar planilhas profissionais com dados sempre atualizados da B3.
Comece agora: Escolha o método que melhor se adequa às suas necessidades e crie sua planilha de investimentos!