Conversor Divisas |
Responder |
Autor | |
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Tema: Conversor Divisas Enviado: 19/Noviembre/2021 a las 13:32 |
Bueno, sinó tien otra solución tambien valdrá Gracias, joven. Ahora ya se puede cerrar
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13990 |
Enviado: 19/Noviembre/2021 a las 13:25 |
Pon el control de tamaño 0.01 x 0.01 visible y ya tá ...
|
|
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 19/Noviembre/2021 a las 13:21 |
Hola de nuevo Aprovecho que aún no se cerró el tema para poner el procedimiento definitivo Public Function CalculaDivisa(Origen As String, Destino As String, Fec As Date, Optional Canti As Double = 1) 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 = True 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 'Introducimos la fecha de cambio Set inputEle = IE.Document.getElementById("end_date_input") inputEle.focus inputEle.value = Fec inputEle.Click 'O bien, inputEle.FireEvent ("OnClick") 'primero ponemos la cantidad que deseamos cambiar IE.visible = False Set inputEle = IE.Document.getElementById("quote_amount_input") inputEle.value = Canti ' 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) Debug.Print span, span.innerText ' 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 Funciona, pero con un pequeño problemilla y es que si dejo el IE no visible desde el principio, entonces no lo calcula con la fecha desada y me dá el valor de hoy. Sabeis como arreglar esto. Saludos. |
|
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 17/Noviembre/2021 a las 14:01 |
Buenos dias Este tema se puede cerrar
|
|
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 05/Noviembre/2021 a las 13:17 |
Hola Ibauluz He visto el enlace y desde luego es mas interesante ya que permite obtener los cambios para un determinado rango de fechas. Pero estoy con el mismo problema para implementar el acceso a esos datos e incorporarlos a una tabla. El caso es como leer la tabla de "cambios" para cada dia. Ya antepuse que estoy verdaderamente pez en esto del HTML y lo poco que intento es por mera intuición viendo "arbolitos" de un lado y de otro. Por eso me conformaba con dar con la solución en la pagina planteada. Me ayudaria a mejorar esa intuicion y si me animo o necesito estudiar el HTML comprenderé mejor su estructura. Gracias por el enlace y Saludos cordiales. Saludos al Grupo |
|
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3849 |
Enviado: 05/Noviembre/2021 a las 12:05 |
Hola.
Así a ojo. en lugar de acceder a https://www1.oanda.com/lang/es/currency/converter/ sería más fácil si directamente accedes a https://www.oanda.com/fx-for-business/historical-rates Luego rellenas los combos como hasta ahora y luego activas el botón download-btn Un saludo. Luis
|
|
El Búho es un pajarraco
|
|
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 05/Noviembre/2021 a las 11:02 |
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 Editado por main - 05/Noviembre/2021 a las 11:09 |
|
main
Colaborador Unido: 31/Agosto/2009 Localización: OVIEDO Estado: Sin conexión Puntos: 1258 |
Enviado: 03/Noviembre/2021 a las 11:10 |
Buenos dias: Por cortesía del joven Mihura puedo obtener el cambiio, de compra-venta, entre monedas Lo obtiene del siguiente enlace: https://www1.oanda.com/lang/es/currency/converter/ Yo lo hago a traves de su función, con un sencillo formulario con los campos "Divisa Origen" y "Divisa Destino"especificando el tipo de operacion deseada COMPRAR O VENDER. La función de Mihura devuelve el cambiio del día Pues bien, desde la pagina web se puede elegir a que fecha se desea realizar el cambio y me gustaria poder pasarsela desde el formulario y así obtener el resultado deseado. Porque hasta ahora necesito entrar en la pagina y ponerle yo la fecha en la que quiero la conversion. Esto me permitiria ir creando una tabla de cambios de la que nutrirme a la hora de generar albaranes y facturas de ventas por exprtaciiones. Saludos al Grupo
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |