Wondows_10 vs Access_2010 Hola de nuevo Como me tengo que declarar gran ignorante del HTML os dejo la función de origen que devuelve el cambio de moneda Public Function CalculaDivisa(Origen As String, Destino As String) As Double Dim IE As InternetExplorer Dim HtmlDoc As HTMLDocument Dim inputEle As HTMLInputElement Dim innerBox 'As HTMLDivElement Dim col 'As HTMLElementCollection Dim div 'As HTMLDivElement Dim span 'As HTMLSpanElement Dim xArray As Variant, i As Integer, Xs As String, Divisa1 As String, Divisa2 As String DoCmd.Hourglass True Set IE = CreateObject("InternetExplorer.Application") IE.visible = False IE.Navigate "https://www1.oanda.com/lang/es/currency/converter/"
Do While IE.ReadyState = 4: DoEvents: Loop 'Do While Do Until IE.ReadyState = 4: DoEvents: Loop 'Do Until
Set HtmlDoc = IE.Document ' primero ponemos la cantidad que deseamos cambiar Set inputEle = IE.Document.getElementById("quote_amount_input") inputEle.value = "1" ' referenciamos el desplegable con la divisa 1 Set innerBox = HtmlDoc.getElementById("scroll-innerBox-1") ' referenciamos controles div de clase "ltr_list_item", que son los elementos del desplegable Set col = innerBox.getElementsByClassName("ltr_list_item") For Each div In col ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right") Set span = div.getElementsByTagName("span")(2) ' ponemos un valor diferente al que queremos (obligamos a actualizar el campo y otros valores) If span.innerText <> Origen Then div.FireEvent ("onmouseover") div.FireEvent ("onclick") Exit For End If Next Set col = innerBox.getElementsByClassName("ltr_list_item") For Each div In col ' referenciamos el elemento span nº 3 de cada div "ltr_list_item" (que es la class "code-right") Set span = div.getElementsByTagName("span")(2) ' en la segunda pasada ponemos el valor que queremos If span.innerText = Origen Then div.FireEvent ("onmouseover") div.FireEvent ("onclick") Exit For End If Next ' referenciamos el desplegable con la divisa 2 y hacemos lo mismo que con la divisa 1 Set innerBox = HtmlDoc.getElementById("scroll-innerBox-2") Set col = innerBox.getElementsByClassName("ltr_list_item") For Each div In col Set span = div.getElementsByTagName("span")(2) If span.innerText <> Destino Then div.FireEvent ("onmouseover") div.FireEvent ("onclick") Exit For End If Next Set col = innerBox.getElementsByClassName("ltr_list_item") For Each div In col Set span = div.getElementsByTagName("span")(2) If span.innerText = Destino Then div.FireEvent ("onmouseover") div.FireEvent ("onclick") Exit For End If Next Sleep 2000 CalculaDivisa = IE.Document.getElementById("base_amount_input").value IE.Quit Set IE = Nothing DoCmd.Hourglass False End Function Inspecionando el campo donde se introduce la fecha compruebo que su Id es "end_date_input" Con lo que me animé a poner en la funcion lo siguiente..
Set inputEle = IE.Document.getElementById("end_date_input") inputEle.value = #10/30/2021# Bien pues dejando la web visible veo que efectivamente introduce la fecha pero no actualiza la conversión y sigue apareciendo el cambio del dia. Faltaria saber controlar y ejecutar el evento que desencadene el nuevo calculo tras cambiar de fecha en el formulario web.
En fin, que si alguno controla como manejar esto de las clases y coleciones le resultará mucho mas facil que a mi. Gracias por vuestro tiempo y conocimiento Saludos al Grupo
|