Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

sábado, 28 de abril de 2018

Cómo importar a Excel una tabla HTML desde Internet- VBA

Hola que tal?

El otro día un usuario me puso una consulta para saber si hay alguna manera de importar una tabla de Internet a Excel.

Y si que la hay. Bueno a veces basta con seleccionar los datos y copiar y pegar, aunque a veces el formato viene con bastantes problemas.

También hay veces que la opción de descargar a Excel existe con lo que es muy fácil.

Pero hay veces que ni lo uno ni lo otro.

Y entonces es cuando viene VBA a nuestro rescate!

Veamos cómo.



Una cosa que muy importante para obtener el resultado deseado es identificar en el código fuente de la Web el nombre o Id de la 'Table'.


Imaginemos que queremos tener un ranking de todas las criptomonedas, y por ejemplo obtenemos una web como la siguiente:

https://es.investing.com/crypto/currencies

Para obtener el Id de la tabla se hace lo siguiente:


1. Se pincha el botón derecho del ratón en un lugar de la tabla, y hacemos 'inspect/inspeccionar elemento'



2. Ahora en el código buscamos el Id.

Si un código HTML te resulta muy extraño de ver, puedes buscar la parte <table y el id se encontrará allí.




En mi caso, el Id de la tabla que deseo importar es "top_crypto_tbl".


Este id será utilizado en el código de VBA, el cual presentamos a continuación.


Sub importartblhtml()

    Dim appIE As Object
    Dim allRowOfData As Object
    Dim curHTMLRow As Object
    Dim Fila As Long, Col As Long
    Dim Celda As Object
   
'lo mejor es usar Internet Explorer al estar reconocido como aplicación en VBA
    Set appIE = CreateObject("internetexplorer.application")

    With appIE

        .Visible = True
        .navigate "https://es.investing.com/crypto/currencies"
       
        While .Busy = True Or .readyState < 4: DoEvents: Wend     
   'nos aseguramos que la web se ha descargado completamente

    'Preparamos nuestra hoja de Excel
     ThisWorkbook.Sheets("Descarga").Activate
     Cells.Select
     Selection.ClearContents 'limpiamos contenidos
       
        'identificamos la Tabla, mediante su Id, para cargarla
        Set allRowOfData = appIE.document.getElementById("top_crypto_tbl")

'La Fila 0 sería los títulos de la tabla con lo que no lo necesitamos
'Recorremos las filas y columnas de la Tabla en HTML
       
        For Fila = 1 To allRowOfData.Rows.Length - 1

            Set curHTMLRow = allRowOfData.Rows(Fila)

            For Col = 0 To curHTMLRow.Cells.Length - 1
                'llevamos los datos a Excel
                Set Celda = Sheets("Descarga").Cells(Fila + 1, Col + 1)
               
                Celda.Value = "'" & curHTMLRow.Cells(Col).innerText
                'convertimos los valores numéricos como número...
                If IsNumeric(Celda) Then Celda.Value = Replace(Celda.Value, ",", ".")
           
            Next Col

        Next Fila
    'Cerramos Internet Explorer
        .Quit

    End With
    ' quitamos todo de la memoria
    Set appIE = Nothing
    Set curHTMLRow = Nothing
    Set Celda = Nothing
End Sub



Bueno pues ese código te ayudará a importar los datos a Excel, pero déjame hacer una aclaración. Se ha de tener cuidado, prestando atención a los separadores decimales, asegurandose que Excel los ha tratado de la misma manera que la Web de donde provienen.


Y con eso, ya está! Espero que este código ayude a muchos de mis lectores.

Saludos





Te ha gustado el artículo?

No te olvides de mostrar tu gratitud hacia el autor (yo) mediante una de las 2 siguientes acciones:

1. Puedes dejar una donación pinchando en la siguiente imagen.

PayPal. La forma rápida y segura de pagar en Internet


2. Puedes recomendar el artículo en Google haciendo clic en g+1 (justo después del artículo), también puedes compartirlo en Facebook, y/o dejar comentarios.

Quieres aprender más en Excel o tienes algún problema que necesita solución?

Puedo ofrecer servicios de consultoría así como cursos personalizados online. Mírate el siguiente enlace si estás interesado/a.



El Sabio de Excel busca colaborades del blog

Si te interesa compartir tu conocimiento sobre Excel de tal manera que puedas ayudar a otras personas, por favor mándame un email a elsabiodeexcel@gmail.com


Subscríbete y recibe todos las entradas por email


Para ello regístrate suministrando tu email en el sitio "Recibe los trucos en tu email" del menú de la derecha.

O sígueme por las redes sociales







3 comentarios: