Sí, puedes recoger datos de acciones desde una web especializada en bolsa directamente en Excel, y aunque existen múltiples enfoques, uno de los más sencillos es usando Power Query o funciones nativas de Excel para obtener datos en tiempo real desde una fuente web. Si quieres algo más personalizado, también puedes usar programación con VBA para automatizar la recolección de datos específicos desde una página web.
Aquí te describo dos enfoques diferentes: uno sin código (más simple) y otro usando VBA (más avanzado).
Opción 1: Usar Power Query para obtener datos desde la web (sin programación)
Excel tiene una herramienta muy útil llamada Power Query, que te permite conectarte a una página web y extraer datos automáticamente.
1. Paso 1: Accede a Power Query
En la pestaña Datos de Excel, selecciona Obtener datos > Desde la Web.
2. Paso 2: Introduce la URL de la página web de cotización
Introduce la URL de la página que tiene la información de las acciones (como Yahoo Finance o Google Finance).
3. Paso 3: Selecciona los datos que quieres extraer
Power Query analizará la página web y te mostrará una lista de tablas disponibles en esa página. Selecciona la tabla que contiene la información de las acciones que deseas.
4. Paso 4: Ajusta los datos
Puedes realizar ajustes en los datos que importas, filtrando las columnas que te interesan.
5. Paso 5: Cargar los datos en Excel
Una vez configurados los datos, haz clic en Cargar para traer la información a tu hoja de cálculo de Excel.
Esto te permite obtener los datos de las acciones desde la web y tenerlos automáticamente actualizados cada vez que refresques la conexión.
Opción 2: Usar VBA para obtener datos específicos de una web (más flexible y programado)
Si necesitas más flexibilidad y la web desde la cual quieres extraer los datos no tiene una tabla clara, puedes usar VBA para extraer información específica de una página web. Este método te permitirá hacer una búsqueda específica del dato (por ejemplo, precio de una acción) para cada símbolo que tengas en tu columna.
A continuación, te dejo un ejemplo de código VBA que puedes usar para buscar el precio de una acción desde Yahoo Finance.
1. Paso 1: Accede al Editor de VBA
Presiona Alt + F11 para abrir el editor de VBA en Excel.
Inserta un Nuevo Módulo: Insertar > Módulo.
2. Paso 2: Introduce el siguiente código VBA
Sub ObtenerPrecioAccion()
Dim http As Object
Dim url As String
Dim simbolo As String
Dim i As Integer
Dim precio As String
Dim ws As Worksheet
Set http = CreateObject("MSXML2.XMLHTTP")
Set ws = ThisWorkbook.Sheets("Hoja1") ' Ajusta el nombre de la hoja según sea necesario
' Supongamos que los símbolos de las acciones están en la columna A
For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
simbolo = ws.Cells(i, 1).Value
url = "https://finance.yahoo.com/quote/" & simbolo & "?p=" & simbolo
' Realiza la solicitud a la página web
http.Open "GET", url, False
http.Send
' Extrae el dato que deseas (precio actual de la acción)
precio = Mid(http.responseText, InStr(http.responseText, """currentPrice"":{""raw"":") + 24, 10)
precio = Split(precio, ",")(0) ' Aísla el valor del precio
' Coloca el precio en la columna B
ws.Cells(i, 2).Value = precio
Next i
End Sub
3. Paso 3: Ejecutar el código VBA
Guarda y cierra el editor de VBA.
Ejecuta la macro ObtenerPrecioAccion presionando Alt + F8 y seleccionando la macro que acabas de crear.
Explicación del código:
Este código recorre los símbolos de acciones que tienes en la columna A de tu hoja de Excel y consulta el precio actual de esas acciones desde Yahoo Finance.
Extrae el precio de la acción utilizando un análisis básico del código HTML de la página web (en este caso, usando responseText y localizando el dato con Mid e InStr).
Coloca el precio de la acción en la columna B, junto al símbolo correspondiente.
Limitaciones:
Este método es básico y depende de la estructura de la página web. Si la estructura cambia o la página utiliza tecnologías como JavaScript para cargar datos dinámicamente, el método no funcionará bien sin ajustes.
Además, si haces muchas solicitudes de forma repetida, algunos sitios pueden bloquear tu IP debido a límites de uso. Es recomendable usar APIs oficiales si vas a extraer datos con frecuencia.
Opción 3: Usar APIs de mercado de valores (más avanzado y robusto)
Si prefieres una solución más profesional y robusta, puedes usar APIs como Yahoo Finance API, Alpha Vantage, o IEX Cloud para obtener datos del mercado de valores de manera más estructurada.
1. Paso 1: Obtener una API Key
Regístrate en servicios como Alpha Vantage, IEX Cloud, o Yahoo Finance API.
2. Paso 2: Usar Power Query o VBA para conectarte a la API
En lugar de conectarte a una página web, harías una llamada directa a la API para obtener los datos de cotización.
Ejemplo de una URL con Alpha Vantage:
https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=YOUR_API_KEY
Puedes usar Power Query o VBA para conectarte a la API, parsear los datos en formato JSON o CSV, y colocarlos en tu hoja de Excel.
Conclusión
Tienes varias opciones para recoger datos de acciones desde una web en Excel:
Power Query es una opción simple y sin código, ideal si puedes obtener datos tabulados desde una web.
VBA te da más flexibilidad si necesitas extraer datos de manera específica desde una web no estructurada.
APIs son una opción más robusta y profesional si buscas integraciones automatizadas y frecuentes con datos del mercado de valores.