RESUELTO Automatizar "Buscar valor destino" con macro

Discute sobre la aplicación de hojas de cálculo
Responder
showerdays
Mensajes: 42
Registrado: Mié Jul 07, 2010 10:38 am

RESUELTO Automatizar "Buscar valor destino" con macro

Mensaje por showerdays »

Hola a todos y gracias de antemano, el tema es el siguiente:

En una hoja de Calc realizo una iteración utilizando la función "Buscar valor destino" y como cambio parámetros para analizar los resultados, necesito automatizar este proceso.

He grabado la macro realizada y el código es el siguiente:


sub iterar()
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:GoalSeekDialog", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoalSeek", "", 0, Array())


end sub


Pero no me hace nada, lo único que he hecho es quitar el rem del código del goalseekdialog. De esta forma me muestra el cuadro de diálogo pero sin datos, los cuales tengo que volver a seleccionar.
Y lo que quería era automatizar este proceso puesto que los valores del cuadro de diálogo son siempre los mismo.

Gracias.
Última edición por showerdays el Jue Sep 01, 2011 8:36 am, editado 1 vez en total.
open office 3.2
Avatar de Usuario
eltete
Mensajes: 261
Registrado: Lun Oct 25, 2010 8:47 pm
Ubicación: Sant Cugat del Vallés - España

Re: Automatizar "Buscar valor destino" con macro

Mensaje por eltete »

En esta dirección tienes trabajada tu misma pregunta
http://www.oooforum.org/forum/viewtopic.phtml?t=5775

En cualquier caso te adjunto este archivo, con la macro muy ligeramente modificada, para adaptarla, creo yo, mejor a tu pregunta

En A2 está la fórmula (yo he puesto una muy sencilla 1+x²)
En B2 se teclea el objetivo buscado
Y una vez activada la macro (clica sobre la estrella) en C2 aparece el resultado

Si no era esto lo que buscabas ya nos dirás algo
Adjuntos
Objetivo.ods
(10.15 KiB) Descargado 503 veces
Win XP SP3 OpenOffice 3.2.1
showerdays
Mensajes: 42
Registrado: Mié Jul 07, 2010 10:38 am

Re: Automatizar "Buscar valor destino" con macro

Mensaje por showerdays »

Muchas gracias!!!

con el enlace me he aclarado perfectamente ya que lo veía más claro en la programación,

por si alguien lo necesita dejo aquí el código:


sub GoalSeek

dim resultfound as new com.sun.star.sheet.GoalResult '(divergence,result structure)
dim formula_address as new com.sun.star.table.CellAddress '(sheet,column, Row structure)
dim variable_address as new com.sun.star.table.CellAddress
dim targetresult as string 'goal value sought as STRING
oDoc=thiscomponent

'indicamos cual es la ubicación de la celda objetivo
formula_address.sheet = 0 'index values - zero based
formula_address.Column = 11
formula_address.Row=47
' indicamos cual es la ubicación de la celda variable
variable_address.sheet = 0
variable_address.Column = 10
variable_address.Row=26
'indicamos cual es el valor objetivo
targetresult = "0"
' run goalseek
resultfound = oDoc.seekgoal(formula_address,variable_address,targetresult)

'sacamos un msgbox y itroducimos el valor en la celda que deseemos
msgbox resultfound.result

oHoja = ThisComponent.Sheets(0)
Temp_salida = oHoja.getCellRangeByName ("K27")
Temp_salida.value = resultfound.result
end sub
open office 3.2
germansd00
Mensajes: 1
Registrado: Lun Oct 08, 2018 11:02 am

Re: RESUELTO Automatizar "Buscar valor destino" con macro

Mensaje por germansd00 »

Realmente ha sido tremendamente útil todo lo expuesto. Gracias a Ambos...han sido una grandísima solución.

Saludos.

German
LibreOffice - Versi??n: 5.2.4.2
Responder