Preguntas y peticiones varias

Buenas tardes @Toti

Lo que plantea puede tener algo más de miga para ese VBA (y requerir quizá algo más de concreción, me temo :stuck_out_tongue_winking_eye: )…

Me explico:

Si está recurriendo a una fuente de datos que requiere “dar a algún botón”, le sugeriria recurrir a alguna otra fuente más sencilla de “scrapear” (si sólo se trata de comprobar valores liquidativos, por ejemplo, la de FT podria servir).

Si lo que se necesita es dar a algún botón, no para obtener los datos, sino para generar y descargar algún archivo ad-hoc (no se, quizá el x-ray en pdf de una cartera) no se si utilizar el excel seria la mejor opción.

Edito: le releo ahora desde el móvil, y veo que se refiere al 2o caso. Habria que entrar en detalles me temo… quizá pueda apoyarse en la IA para avanzar en su caso concreto.

3 Me gusta

Muchas gracias @Carlos

Seguiré investigando.

Por si le sirve para echar a andar (no soy experto en esto, disculpe, no insistiré, simple ejercicio de pedir consejo a chatgpt)


Sí, es posible interactuar con los botones y otros elementos de una página web externa desde un módulo VBA en Excel. Esto se logra utilizando los objetos InternetExplorer o XMLHTTP para automatizar la interacción con la web. Aquí te explicaré cómo hacerlo usando el objeto InternetExplorer, que es más común y fácil de entender para tareas de automatización de navegación web.

Paso a Paso para Interactuar con una Página Web Externa desde Excel VBA

1. Configuración Inicial

  1. Abrir el Editor de VBA: Presiona Alt + F11 para abrir el Editor de VBA.
  2. Insertar un Módulo: Ve a Insertar > Módulo para crear un nuevo módulo.

2. Referencias Necesarias

  1. Agregar Referencias: Para trabajar con Internet Explorer, necesitas habilitar la referencia a “Microsoft Internet Controls”.
    • En el Editor de VBA, ve a Herramientas > Referencias.
    • Busca y marca Microsoft Internet Controls y haz clic en Aceptar.

3. Escribir el Código VBA para Interactuar con la Página Web

A continuación, se muestra un ejemplo básico de cómo interactuar con un botón de una página web externa. Este ejemplo asume que la página tiene un botón con un id conocido, como "submitButton".

Sub InteractuarConPaginaWeb()
    Dim ie As Object
    Dim boton As Object
    
    ' Crear un nuevo objeto de Internet Explorer
    Set ie = CreateObject("InternetExplorer.Application")
    
    ' Hacer que el navegador sea visible
    ie.Visible = True
    
    ' Navegar a la página web
    ie.Navigate "http://www.ejemplo.com"
    
    ' Esperar a que la página cargue completamente
    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop
    
    ' Buscar el botón por su ID (asegúrate de que el botón tenga un ID)
    Set boton = ie.document.getElementById("submitButton")
    
    ' Verificar si el botón fue encontrado y hacer clic en él
    If Not boton Is Nothing Then
        boton.Click
    Else
        MsgBox "Botón no encontrado"
    End If
    
    ' Cerrar el navegador (opcional)
    ' ie.Quit
    
    ' Liberar objetos
    Set boton = Nothing
    Set ie = Nothing
End Sub

4. Ejecutar el Código

  1. Guardar y Cerrar: Guarda los cambios y cierra el Editor de VBA.
  2. Ejecutar la Macro: Vuelve a Excel y ejecuta la macro InteractuarConPaginaWeb desde la pestaña Desarrollador > Macros.

Consideraciones

  • Identificación de Elementos: La forma más común de interactuar con elementos de la página web es utilizando el id, name, o class de los elementos HTML. Asegúrate de inspeccionar la página web (usando herramientas de desarrollador en el navegador) para identificar estos atributos.
  • Tiempo de Carga: Asegúrate de que la página web haya cargado completamente antes de intentar interactuar con ella. Puedes usar DoEvents y comprobar el estado del navegador (ie.Busy y ie.readyState).
  • Errores y Excepciones: Maneja posibles errores, como cuando los elementos no se encuentran o el navegador falla al cargar la página.
  • Compatibilidad: Esta técnica es específica de Internet Explorer y puede no funcionar con otros navegadores. Además, algunas páginas web pueden tener medidas de seguridad que bloquean la automatización.

Usando este método, puedes controlar botones y otros elementos interactivos en una página web externa directamente desde un módulo VBA en Excel.

3 Me gusta

Hay una opción de conseguir los valores liquidativos de un fondo automáticamente en Excel, recurriendo a la api de yahoo finance… sin recurrir a powerQuery o VBA
(Mientras funcione la web, la siguiente fórmula debería funcionar):

  • Celda A1: Colocar el ticker del fondo empleado en yahoo finance (ejemplo Adarve, el ticker sería: 0P0001I6OF.F)
  • Celda B1: Emplear la formula siguiente que hará referencia a la celda anterior. Luego copiar pegar ambas celdas cuantas veces se considere necesario para listar varios fondos. La fórmula en la celda B1:

=VALOR(SUSTITUIR(EXTRAE(SERVICIOWEB(“https://query1.finance.yahoo.com/v8/finance/chart/“&A1);ENCONTRAR(“regularMarketPrice”;SERVICIOWEB(“https://query1.finance.yahoo.com/v8/finance/chart/”&A1))+20;ENCONTRAR(”,“;SERVICIOWEB(“https://query1.finance.yahoo.com/v8/finance/chart/”&A1);ENCONTRAR(“regularMarketPrice”;SERVICIOWEB(“https://query1.finance.yahoo.com/v8/finance/chart/”&A1))+20)-(ENCONTRAR(“regularMarketPrice”;SERVICIOWEB(“https://query1.finance.yahoo.com/v8/finance/chart/”&A1))+20));”.“;”,”))

Documentación del “tocho” para los aburridos…

Desglose de la Fórmula (detalles de documentación cortesía -de nuevo- de la IA):

  1. ENCONTRAR("regularMarketPrice"; A1) + 20: Encuentra la posición de "regularMarketPrice": y se desplaza 20 caracteres para llegar al inicio del valor.
  2. ENCONTRAR(","; A1; ENCONTRAR("regularMarketPrice"; A1) + 20): Encuentra la posición de la siguiente coma después del inicio del valor.
  3. EXTRAE(A1; ...; ...): Extrae el texto desde el inicio del valor hasta justo antes del siguiente delimitador.
  4. SUSTITUIR(...; "."; ","): Reemplaza todos los puntos . en el texto extraído por comas ,. Esto es útil si tu configuración regional utiliza comas para los decimales.
  5. VALOR(...): Convierte el texto modificado a un número.

Ejemplo de Uso:

  • Celda A1 contiene: JSON con el valor de "chartPreviousClose":143.177.
  • Fórmula completa en otra celda: Introduce la fórmula tal cual para obtener 143,177 (si la configuración regional utiliza comas como separador decimal).

Nota:

  • Configuración Regional: Asegúrate de que tu configuración regional en Excel usa comas para los decimales. Si tu configuración usa puntos como separadores decimales, puedes omitir el paso de reemplazo.
  • Fórmulas de Excel: Siempre revisa la configuración de fórmulas en Excel para asegurarte de usar el separador de argumentos correcto (; o ,).

Con esta fórmula, puedes extraer y procesar dinámicamente valores numéricos de texto JSON en Excel, ajustando automáticamente el formato decimal según sea necesario.

Edito: Actualizo el dato a recuperar a “regularMarketPrice”. Igualmente pueden obtenerse otros datos, como el nombre del fondo, fecha del VL, etc.

8 Me gusta

Espectacular!!! No hay palabras!!! Muchas gracias @Carlos

4 Me gusta

He añadido el archivo en el hilo correspondiente.
Se trata de un excel “sencillo pero funcional” (no powerQuerys ni VBA), para obtener a partir del ticker de un fondo su nombre, su VL y la fecha de este.
Dejo enlace al post correspondiente.

7 Me gusta

Muy generoso por su parte y super-profesional. Gracias @Carlos :clap:t2: :clap:t2:

3 Me gusta

Hola @carlos

El código que me ha facilitado funciona correctamente, muchas gracias. El primer problema es que no conozco el identificador del botón de descarga.

He localizado la instrucción ie.document.getElementsByTagName(“button”) que me permite obtener la colección de botones, colección que después exploro secuencialmente.

En la página de descarga de R4 solo aparece un botón, en la posición cero y el identificador “button-addon2”. Al clicar sobre él, desde código, aparentemente no sucede nada.

Interpreto que quizás lo que yo he tomado por un botón no lo sea en realidad, que quizás sea un vínculo.

Acudo a la página, en navegación normal, clico encima del supuesto botón y le doy a copiar vinculo. Al pegar sobre un Excel aparece simplemente el texto “javascript:;”

De manera que si no es un botón y tampoco es un vínculo ya no sé cómo continuar.

Reitero mi agradecimiento

Saludos

3 Me gusta

Hola @Toti

Como le decía, no soy experto en estos temas, no obstante tengo entendido que el javascript es un llamamiento a un código que se ejecutará en la propia pagina web (como puede ser solicitar nuevos datos al servidor).

Teniendo esto en cuenta, existen varios motivos por los que podria no funcionar la activacion del boton desde excel, dependiendo de cada caso.

Por si quiere seguir el desarrollo del ejecicio, le amplío algo de info por privado y así no colmatamos el post. :slight_smile:

3 Me gusta

Muy amable. Se lo agradeceré muchisimo.

1 me gusta

Me gustaría preguntar si hay alguna forma de recibir el resumen semanal aún entrando en el foro en ese periodo. Buscando en preguntas anteriores no me sale nada al respecto.

image

¡Gracias por toda la dedicación y saludos!

2 Me gusta

Una duda de novato. El gestor del Banco me indica el otro día que a las rentabilidades que se publican en su Web (las mismas que en otras independientes como mornigstar, etc.) no son ya con los gastos descontados. Que para obtener la rentabilidad neta había que quitarle a esa rentabilidad además el TER y otros gastos como de entrada, salida…

Como lo poco que he aprendido ha sido sobre RV Indexada que tiene unos costes bajos no me ha preocupado mucho este asunto hasta ahora que estoy intentando comprender la RF.

Pero como me generó la duda he estado indagando en Internet, que aunque hay opiniones para todo, en la mayoría establece que en las rentabilidades que se publican ya están descontados los gastos, al menos el TER. Coincide con lo que yo tenía entendido.

¿Alguno de Vds. que lo tenga claro puede confirmarme que opción es la adecuada? Gracias

3 Me gusta

Dependerá del fondo. En el caso de gastos de entrada o salida de los fondos, como de custodias tipo la que tienen los indexados en algunos comercializadores, la rentabilidad final para la persona es menor que la indicada en el valor liquidativo del fondo.

Sin embargo para los costes habituales como la comisión de gestión o otros gastos del fondo, ya están descontados en el valor liquidativo.

Creo que el gestor del banco que usted comenta ha escuchado algo pero no se ha enterado bien como funciona el tema.

8 Me gusta

Gracias @agenjordi. Eso pensaba yo, no cuadraba su explicación.

En caso contrario prácticamente ningún Fondo de RF del porfolio de esa entidad tendría rentabilidad positiva si le descuento el TER a la rentabilidad publicada.

2 Me gusta

Three years later…

Iban Wallet desaparece | Conoce alternativas de inversión en 2024.

Se veía “de” venir

5 Me gusta

Hola a todos Ustedes,

Estoy mirando en ING el filtro de ETF,s para ver que tienen disponible.
El filtro dispone de pocos campos de filtrado, es muy precario y luego al entrar en los ETF muchos datos básicos no están indicados.
La mayoría de ETF,s son de distribución y yo busco de acumulación.
Estoy copiando el ISIN en ING y pegándolo luego en JUST ETF (que si tiene un filtro y una información con cara y ojos) para poder ver los datos bien (es lo único que se me ocurre).
No puedo filtrar por divisa (solo quiero euro) ni por distribución/acumulación.
No entiendo como una entidad de este tamaño tiene un buscador tan malo.

¿Alguien podría indicarme como lo hace para manejarse con los ETF,s en esta entidad con agilidad?

Gracias por anticipado

Un saludo para todos Ustedes

2 Me gusta

buenos días , ¿ alguien que viva o haya vivido en Suecia?
mi hija va a ir 4 años por un doctorado y empieza en Enero.
¿cosas a tener en cuenta?
¿ dificultades?
¿consejos?
¿tramites?
cualquier cosa

5 Me gusta

buenas, una pregunta, por curiosidad, ¿ya no se pueden mandar mensajes privados?

1 me gusta

Hola @guarrenbafet , esta función sigue funcionando, pero está reservada para los Patreones. Es una forma de premiar a los que ayudan a mantener el tinglado en marcha, vaya.

Si se hace Patreon, puede hacerlo sin problemas.

11 Me gusta

Utilizo este post para plantear una cuestión que seguramente es más común de lo que pueda parecer, y es tener en cartera acciones que ya no cotizan y por tanto, no se pueden negociar, bien porque la empresa haya quebrado, desaparecido o cosas por el estilo.

El problema es que estas acciones lo único que dan son gastos, y la pérdida invertida en este activo queda latente, sin por lo menos apuntarse la minusvalía en la declaración IRPF. A los 4 años de no publicar en el Registro Mercantil podemos exigir a nuestro Banco que las retire de nuestras posiciones, con los gastos correspondientes.

Otra solución puede ser realizar una compra-venta de dichas acciones con un particular, por un precio simbólico, y con dicho contrato, se inicia un procedimiento de “renuncia voluntaria” al mantenimiento de la inscripción en el registro de anotación en cuenta. Preguntado hoy en ING, es muy fácil el procedimiento en este Banco, proporcionan el documento mercantil de compra-venta, realizan todas las gestiones de dicha compra-venta (alta-baja en los registros y comunicación a la otra parte de la anotación en cuenta OTC) para así realizar la solicitud de renuncia voluntaria al mantenimiento de la inscripción. Estas gestiones las realiza ING como digo con una comisión única de 30€ a cada parte.

Una vez explicado el problema de mantener acciones sin cotizar en nuestras posiciones, lo que estoy proponiendo es si algún colega tiene acciones de este tipo, sería realizar una compraventa de una parte a la otra con las acciones de cada uno, por el precio de 1€. Con dichos contratos de compra-venta, seguiríamos teniendo las acciones porque hemos realizado el intercambio de acciones, pero lo más interesante es que ya con estas operaciones podemos aplicarnos la minusvalía de la inversión que realizamos en su momento, y poder compensarlo con plusvalías del ejercicio o bien aplicarlo en los 4 años próximos.

Si alguien de esta comunidad estuviera interesado en dicha operación, le agradeceré que se comunique por privado y lo podemos comentar, si el depositario común fuera ING, sería todavía más sencillo, y por 60€ se podrían aflorar las minusvalías que en su día se generaron.

Un saludo y gracias por su atención.

12 Me gusta