Obtener datos de página web (Convertidor de Divisas)

En VBA es muy fácil hacer una consulta a una página web, lo complicado es procesar la respuesta pues por lo general es un código HTML, aunque también puede estar en formato json y en ese caso podemos utilizar el código de Cómo Utilizar JSON en Macros VBA.
Para hacer una consulta a una página web se utiliza la siguiente función

Function DatosWeb(url As String) As String
    On Error Resume Next
    Dim xml As Object
    Dim result As String
    Set xml = CreateObject("MSXML2.ServerXMLHTTP")
    xml.Open "GET", _
        url
    xml.Send
    ConsultarPagina = xml.responsetext
End Function


Y utilizamos la función de la siguiente forma para hacer una consulta a la página de Gmail

Sub ejemplo()
    Dim codigoPagina As String
    codigoPagina = DatosWeb("https://www.gmail.com/intl/es/mail/help/about.html")
    MsgBox codigoPagina
End Sub


Y el resultado sería similar a la siguiente imagen


El texto que vemos es el mismo que vemos en el navegador como código fuente de la página

Un vez que tenemos la respuesta (que es el código fuente de la página) podemos obtener información de ella utilizando funciones de texto.

Cuando la respuesta está en formato json es mas facil de manejar.
Si queremos obtener el valor del USD en pesos mexicanos hacemos una consulta a una página web y obtenemos el código fuente que es un json.


Podemos utilizar el json como en el siguiente código (Para que el código funcione se debe crear la clase json y la función parseJson como se indica en Cómo Utilizar JSON en Macros VBA)

Sub ejemplo2()
    Dim strJson As String
    Dim objJson As Object
    strJson = DatosWeb("http://devel.farebookings.com/api/curconversor/USD/MXN/1/json") 'Nos devuelve el valor del dolar americano es pesos mexicanos
    Set objJson = parseJSON(strJson)
    If Not objJson Is Nothing Then
        MsgBox "1 USD = " & objJson.Item("MXN") & " MXN"
    End If
End Sub


Y el resultado es el siguiente

Anuncios

2 pensamientos en “Obtener datos de página web (Convertidor de Divisas)

  1. Una Consulta en el caso de que sea un JSON con a varios valores como lograría parearlo en Excel con la clase que desarrollaste.

    • Siempre que sea un JSON valido se lo puedes pasar directamente, yo use un JSON con solo 2 valores para que se entienda pero la clase puede parsear cualquier JSON.
      Por otro lado, no fui yo quien hizo la clase, yo solo explico como usarlo, en la entrada pongo el link de donde lo encontré.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s