Iniciar actualizacion automatica desde una Macro

Buenos días:
Tengo un problema con un libro de CALC Libre Office 7.5.3.2 en Windows10.
Al abrir el archivo me dice Se desactivó la actualización automática de enlaces externos.
Eso lo que quiero cuando entro en el libro, sin embargo tengo una macro creada para que me baje de la WEB unos datos que me interesa tener en una tabla pero no funciona si no le doy Permitir actualización.
Lo que me interesa saber si existe algún método par incluir en la Macro la activacion automatica para que proceda a la ejecución posterior del código correspondiente.
Saludos.

Podrías intentar utilizar la propiedad “UpdateLinks” del objeto “ThisComponent” de LibreOffice Calc.
Por ejemplo:

Sub ActualizarEnlacesYMacro()
    ThisComponent.UpdateLinks = True ' Activa la actualización automática de enlaces
    ThisComponent.UpdateLinks = False ' Desactiva la actualización automática de enlaces (opcional)
    
    ' Aquí puedes poner el resto de tu código para descargar los datos y manipular la tabla
    
    MsgBox "La macro ha finalizado."
End Sub

Al establecer la propiedad UpdateLinks en True, se activaría la actualización automática de enlaces externos, y a continuación ejecutar el código para descargar los datos y manipular la tabla.
Posteriormente desactivarías la actualización automática de enlaces estableciendo la propiedad en False.

Al habilitar la actualización automática de enlaces, debería haber un ligero retraso en la ejecución de la macro.

No me reconoce el código me presenta el siguiente error:
Error de ejecución de BASIC.
No se encontró la propiedad o el método: UpdateLinks.

Puede que “updateLinks()” no está disponible en BASIC de LibreOffice Calc.

Prueba utilizar el siguiente código para actualizar los enlaces en LibreOffice Calc:

Sub ActualizarEnlaces()
    Dim oLinks As Object
    oLinks = ThisComponent.getLinks()
    If Not IsNull(oLinks) Then
        oLinks.update()
    End If
End Sub

Me vuelve a dar error
Error de ejecución de BASIC.
No se encontró la propiedad o el método: update.
He preguntado en ChatGpt openai.com y tras varios intentos me dice que con codigo no se puede conseguir.
Su conclusion dice lo siguiente:
Mis disculpas nuevamente por la información incorrecta. Parece que cometí un error al proporcionar el código anterior.

Desafortunadamente, no hay una forma directa de activar la actualización automática de enlaces externos en LibreOffice Calc mediante una macro. La configuración de actualización de enlaces externos se encuentra en las opciones de LibreOffice y no se puede modificar mediante código.

Una posible solución alternativa sería simular manualmente la activación de la actualización automática de enlaces externos antes de ejecutar la macro. Puedes seguir estos pasos:

Abre tu archivo de Calc.
Ve al menú "Herramientas" y selecciona "Opciones".
En la ventana de opciones, expande la sección "LibreOffice Calc" y haz clic en "Actualizar".
Marca la casilla "Actualizar automáticamente los enlaces al abrir" y haz clic en "Aceptar" para guardar los cambios.

Después de haber realizado estos pasos, los enlaces externos se actualizarán automáticamente al abrir el archivo, sin necesidad de hacerlo manualmente.

Lamentablemente, no hay una forma directa de realizar esto mediante una macro. Sin embargo, al seguir los pasos mencionados, podrás lograr el resultado deseado.

Nuevamente, lamento la confusión y espero que esta solución alternativa sea útil para ti. Si tienes más preguntas, no dudes en preguntar.

Se debería reportar esta incidencia para mejorar el programa en nuevas ediciones.

Saludos a todos.

Chatgpt en la versión free, solo tiene información hasta 2021 y no es muy fiable en la gestión de códigos de programación.
Si manejas inglés, consulta a Bard: https://bard.google.com/
Tiene información actualizada al día y parece que es mucho mas fiable en la gestión de códigos de programación.


Edito: consulté a Bard y esto es lo que informó:

In Libreoffice Calc for Windows, version 7.5.3, it is possible to activate the automatic updating of external links and later to deactivate it by code, from a macro.

Yes, it is possible to activate the automatic updating of external links and later to deactivate it by code, from a macro in LibreOffice Calc for Windows, version 7.5.3.

To activate the automatic updating of external links, you can use the following macro:

Sub EnableAutoUpdate()
'This macro enables automatic updating of external links

'Get the current sheet
Dim sht As Object
Set sht = ThisWorkbook.Sheets("Sheet1")

'Set the automatic updating of external links to true
sht.EnableAutoUpdate = True
End Sub

To deactivate the automatic updating of external links, you can use the following macro:

Sub DisableAutoUpdate()
'This macro disables automatic updating of external links

'Get the current sheet
Dim sht As Object
Set sht = ThisWorkbook.Sheets("Sheet1")

'Set the automatic updating of external links to false
sht.EnableAutoUpdate = False
End Sub

You can then run these macros from the Macros dialog box.

Here is an example of how you can use these macros in a macro:

Sub MyMacro()
'This macro enables automatic updating of external links, then updates the values of cells that contain external links, and then deactivates automatic updating of external links

'Enable automatic updating of external links
Call EnableAutoUpdate

'Update the values of cells that contain external links
sht.UpdateLinks

'Disable automatic updating of external links
Call DisableAutoUpdate
End Sub

I hope this helps!

Sigue dándome error:
Error de ejecución de BASIC.
No se encontró la propiedad o el método: Sheets.

Puede que debas utilizar las órdenes para la versión en español, Bard por ahora solo genera código para la versión en inglés.

Sub HabilitarActualizacionAutomatica()
'Esta macro habilita la actualización automática de enlaces externos

'Obtener la hoja actual
Dim hoja As Object
Set hoja = ThisWorkbook.Sheets("Hoja1")

'Establecer la actualización automática de enlaces externos en verdadero
hoja.EnableAutoUpdate = True
End Sub



Sub DeshabilitarActualizacionAutomatica()
'Esta macro deshabilita la actualización automática de enlaces externos

'Obtener la hoja actual
Dim hoja As Object
Set hoja = ThisWorkbook.Sheets("Hoja1")

'Establecer la actualización automática de enlaces externos en falso
hoja.EnableAutoUpdate = False
End Sub

Sub MyMacro()
    'Esta macro permite la actualización automática de vínculos externos, luego actualiza los valores de las celdas que contienen vínculos externos y, finalmente, desactiva la actualización automática de vínculos externos.

    'Habilitar la actualización automática de vínculos externos
    Call HabilitarActualizacionAutomatica

    'Actualizar los valores de las celdas que contienen vínculos externos
    ThisComponent.UpdateLinks

    'Desactivar la actualización automática de vínculos externos
    Call DeshabilitarActualizacionAutomatica
End Sub

errox

Error de tiempo de ejecución BÁSIC.
Variable de objeto no definida.

Set hoja = ThisComponent.getSheets.getByName(“Planilha1”)

erroxx

No funciona el código que se propone, sigue dando error.

Puede que en Basic de Libreoffice, el equivalente a la línea de código:

     Set hoja = ThisWorkbook.Sheets("Hoja1") 

sea:

    hoja = ThisComponent.Sheets.getByName("Hoja1")

Sería utilizar ThisComponent en lugar de ThisWorkbook para hacer referencia al libro de trabajo actual y el método getByName en el objeto Sheets para obtener una referencia a la hoja específica por su nombre y asignarla a la variable hoja.

Kyodake te recuerdo que estamos hablando de Macros en una hoja de calculo de Libre Office 7.5.3.2
Parece que Sheets lo ha pasado pero ahora se para en la siguiente linea.
Esto si que es una prueba de ensayo/error y de las duras.
Si puedes comprueba si End Sub no sera “Final de la Macro”
A este paso si esto tiene solución la encontraremos cuando la versión este por la 2050.1.3.2 :rofl:
Captura

Prueba reemplazar:

  hoja.EnableAutoUpdate = True
  
  por

  hoja.EnableAutomaticCalculation = True

Tampoco
Captura

Estuve leyendo detenidamente los manuales que tenía de StarBasic y Basic de OpenOffice y puede que este código, es el último que se me ocurre, haga lo que necesitas:

Sub HabilitarActualizacionAutomatica()
'Esta macro habilita la actualización automática de enlaces externos

' Obtener la hoja actual
    Dim oSheet As Object
    oSheet = ThisComponent.Sheets.getByName("Hoja1")

' Establecer el modo de actualización automática de enlaces externos
    oSheet.LinkMode = com.sun.star.sheet.LinkMode.AUTOMATIC
End Sub



Sub DeshabilitarActualizacionAutomatica()
'Esta macro deshabilita la actualización automática de enlaces externos

' Obtener la hoja actual
    Dim oSheet As Object
    oSheet = ThisComponent.Sheets.getByName("Hoja1")

'Establecer la actualización automática de enlaces externos en manual
    oSheet.LinkMode = com.sun.star.sheet.LinkMode.MANUAL
End Sub

(Con MANUAL, la hoja sigue vinculada a los datos de origen, pero los cambios en los datos de origen no se reflejan automáticamente en la hoja) 



Sub MyMacro()
    'Esta macro permite la actualización automática de vínculos externos, luego actualiza los valores de las celdas que contienen vínculos externos y, finalmente, desactiva la actualización automática de vínculos externos.

    'Habilitar la actualización automática de vínculos externos
    Call HabilitarActualizacionAutomatica

    'Actualizar los valores de las celdas que contienen vínculos externos
    ThisComponent.UpdateLinks

    'Desactivar la actualización automática de vínculos externos
    Call DeshabilitarActualizacionAutomatica
End Sub

También falla.

Captura