Tasa BCV en Excel
Conecta Excel a Cotizave con Power Query. Se actualiza sola, sin VBA.
Método Power Query (recomendado)
Abre el editor de Power Query
En Excel, navega a Data → Get Data → From Other Sources → From Web. En el cuadro de diálogo que aparece, selecciona Advanced (en lugar de Basic) para poder agregar encabezados HTTP personalizados.
Configura la URL y el header de autenticación
En el campo de URL pega https://api.cotizave.com/v1/fx/rates/reference. Luego, en la sección HTTP request header parameters, añade una fila con:
Nombre del header : X-API-Key Valor : TU_API_KEY
Pega el código M en el editor avanzado
Una vez en Power Query, abre Home → Advanced Editor y reemplaza todo el contenido con el siguiente código M. Cambia TU_API_KEY por tu clave real:
let
Source = Json.Document(
Web.Contents(
"https://api.cotizave.com/v1/fx/rates/reference",
[Headers = [#"X-API-Key" = "TU_API_KEY"]]
)
),
Rate = Source[rate]
in
RateHaz clic en Done y luego en Close & Load. La tasa aparecerá en la celda de destino.
Configura el refresh automático
Ve a Data → Queries & Connections. En el panel lateral, haz clic derecho en tu consulta y selecciona Properties. Activa la opción Refresh every X minutes y pon el intervalo que necesites. Al abrir el archivo también puedes marcar Refresh data when opening the file para tener siempre el valor del día.
Método alternativo: macro VBA
Si prefieres VBA o necesitas disparar la actualización desde otra macro, abre el editor de Visual Basic con Alt+F11, inserta un módulo nuevo e ingresa este código:
Const COTIZAVE_API_KEY As String = "TU_API_KEY"
Sub ActualizarTasaBCV()
Dim http As Object
Dim json As Object
Dim url As String
Dim responseText As String
Dim rate As Double
url = "https://api.cotizave.com/v1/fx/rates/reference"
Set http = CreateObject("MSXML2.XMLHTTP.6.0")
http.Open "GET", url, False
http.setRequestHeader "X-API-Key", COTIZAVE_API_KEY
http.Send
If http.Status = 200 Then
responseText = http.responseText
' Extraer el valor del campo "rate" del JSON
Dim rateStart As Long
rateStart = InStr(responseText, """rate"":") + 7
Dim rateEnd As Long
rateEnd = InStr(rateStart, responseText, ",")
If rateEnd = 0 Then rateEnd = InStr(rateStart, responseText, "}")
rate = CDbl(Mid(responseText, rateStart, rateEnd - rateStart))
' Escribir en la celda B2 (ajusta según tu hoja)
ThisWorkbook.Sheets(1).Range("B2").Value = rate
MsgBox "Tasa BCV actualizada: " & rate
Else
MsgBox "Error al consultar la API: " & http.Status
End If
Set http = Nothing
End SubEjecuta la macro con F5 o asígnala a un botón. Ajusta Sheets(1).Range("B2") a la celda donde quieres que aparezca la tasa.
Preguntas frecuentes
¿Funciona en Excel Online (Microsoft 365 web)?
Power Query con autenticación por header HTTP funciona en Excel de escritorio (Windows y Mac). En Excel Online la funcionalidad de Power Query está limitada y puede no soportar encabezados personalizados. Para Excel Online, la alternativa más sencilla es la macro VBA o consumir la API desde Power Automate.
¿Puedo traer varias tasas de golpe (BCV, paralelo, P2P)?
Sí. Crea una consulta de Power Query separada para cada mercado cambiando el segmento de la URL (reference, parallel, binance, etc.). También puedes expandir el código M para hacer varias llamadas y combinar los resultados en una tabla.
¿La guía aplica para Excel en Mac?
Sí, Power Query está disponible en Excel para Mac (versión 16.x en adelante). La navegación de menús es casi idéntica: Data → Get Data → From Web. La macro VBA también funciona en Mac con la misma sintaxis.