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.
RESUELTO Automatizar "Buscar valor destino" con macro
-
- Mensajes: 42
- Registrado: Mié Jul 07, 2010 10:38 am
RESUELTO Automatizar "Buscar valor destino" con macro
Última edición por showerdays el Jue Sep 01, 2011 8:36 am, editado 1 vez en total.
open office 3.2
Re: Automatizar "Buscar valor destino" con macro
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
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 505 veces
Win XP SP3 OpenOffice 3.2.1
-
- Mensajes: 42
- Registrado: Mié Jul 07, 2010 10:38 am
Re: Automatizar "Buscar valor destino" con macro
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
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
-
- Mensajes: 1
- Registrado: Lun Oct 08, 2018 11:02 am
Re: RESUELTO Automatizar "Buscar valor destino" con macro
Realmente ha sido tremendamente útil todo lo expuesto. Gracias a Ambos...han sido una grandísima solución.
Saludos.
German
Saludos.
German
LibreOffice - Versi??n: 5.2.4.2