Hola a todos:
Utilizo LibreOffice Portable (de portableapps.org) Versión: 6.4.3.2 (x86).
Tengo una hoja de cálculo con muchas tablas dinámicas en varias hojas. A cada una de esas tablas dinámicas les he aplicado un formato condicional para que muestren determinado color en función de su contenido, y funciona correctamente.
Mes a mes tengo que actualizar esas tablas dinámicas con nuevos datos, con el efecto secundario de que se eliminan los formatos condicionales, y es muy costoso en tiempo volver a configurarlos.
En “otras aplicaciones” es posible establecer la opción de que al actualizar la tabla no se modifiquen los formatos, pero aquí no sé cómo hacerlo, y estoy empeñado en hacerlo con LibreOffice Calc.
He revisado las Opciones del Calc, buscado en internet y no encuentro la manera, por lo que me decido a preguntar aqui como último recurso: dudo mucho de que esto no le haya pasado a alguien más antes que a mí.
Confío en vuestra ayuda. Si necesitáis alguna aclaración, no dudéis en comentarlo.
Muchas gracias
Quizás sea posible, usando Macros, puedo sugerir algo viendo un archivo de plantilla, ya formateado. Cada tabla dinámica tendrá una macro. si quieres contacto directo ver: https://wiki.documentfoundation.org/User:Schiavinatto
Muchas gracias por tu comentario.
Me parece una muy buena opción mientras no se desarrolle una solución mejor.
Según entiendo, por lo que he podido ver de los comentarios de tu extensión, se trataría de desarrollar una macro que copia las condiciones que establecen el formato (en mi caso son 3 o 4 condiciones) y las pega en determinados rangos de la hoja, los ocupados por las zonas de datos de las tablas dinámicas, a las que yo podría asignar un nombre previamente, para poder referenciarlas automáticamente.
De esta forma, en primer lugar actualizaría todas las tablas (62 actualmente), y a continuación ejecutaría la macro que establecería todos los formatos condicionales.
Lo malo es que tengo muy pocas nociones de programación. ¿Sería posible que me facilitaras algún enlace o referencia a páginas donde pueda documentarme?
De nuevo, muchas gracias por tu interés.
Un saludo
Hola @bowman, en ask pt_br estamos agrupando enlaces a Basic, échale un vistazo.
Puedo sugerir, una macro, conociendo un archivo de ejemplo, ya formateado.
Hola de nuevo, @schiavinatto; te he enviado una hoja de ejemplo a tu correo electrónico con una prueba de concepto.
Un saludo
Hola @bowman, ya lo había hecho para un archivo que tenía un TD, en este archivo simulé otro TD, y para mi sorpresa cuando puse el formato uno al otro, se borra. Para reducir las molestias al navegar a otra tabla, es necesario hacer doble clic para mostrar el formato. Si funciona, hasta que lo encuentre mejor, para otros TD, debe nombrar una celda BaseX (X = número de tabla) y duplicar la macro TDX (X = número de tabla). Estoy a su disposición para ayudarlo, si es necesario.
Abrazo.
'==============================================
' M O D E L O
Sub TDX 'X = numero da tabela
FormatoTD "BaseX" 'X = numero tabela
end sub
'===============================================
Sub TD1
FormatoTD "Base1"
End Sub
Sub TD2
FormatoTD "Base2"
End Sub
Sub FormatoTD ( TD As String )
'================================================|
'' Vaya a "FormatoCondicional"
IrPara "FormatoCondicional"
Ejecutar "Copy"
'================================================|
'' Ir a "Base"
IrPara TD
'================================================|
'' Actualizar Tabla Dimamica Por Celda
Ejecutar "RecalcPivotTable"
'================================================|
'' Ir a la line final
Ejecutar "GoRightToEndOfDataSel"
'================================================|
'' Ir coluna final
Ejecutar "GoDownToEndOfDataSel"
'================================================|
'' Pegar Formato
PegarQue "T"
'================================================|
'' Ir a "Base"
IrPara "A1"
End Sub
'000000000000000000000000000000000000000000000000000000000000000000000000000000
' SUBMACROS
'000000000000000000000000000000000000000000000000000000000000000000000000000000
Sub Ejecutar ( oQue$ )
'O############################################################################O
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:" & oQue & "", "", 0, Array())
End Sub
Sub IrPara ( X As String )
'O############################################################################O
dim args1(0) as new com.sun.star.beans.PropertyValue : args1(0).Name = "ToPoint" : args1(0).Value = X
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:GoToCell", "", 0, args1())
End Sub
Sub PegarQue ( xxx$ )
'O############################################################################O
' Add the letters in the sequence below - |- - - or - -- - - - |
' "S" "V" "D" "F" "N" "T" | “A” |
' Text Number DateTime Formula Annotation Format | All + Object |
'---------------------------------------------------------------------------------------------------|
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Flags" : args1(0).Value = xxx
args1(1).Name = "FormulaCommand" : args1(1).Value = 0
args1(2).Name = "SkipEmptyCells" : args1(2).Value = false
args1(3).Name = "Transpose" : args1(3).Value = "false"
args1(4).Name = "AsLink" : args1(4).Value = "false"
args1(5).Name = "MoveMode" : args1(5).Value = 4
CreateUnoService("com.sun.star.frame.DispatchHelper") _
.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:InsertContents", "", 0, args1())
End Sub
Muchas gracias @schiavinatto. Voy a tratar de analizar las macros que propones para ver cómo organizarme; no estoy muy familiarizado con las macros y necesito algún tiempo.
Un saludo y gracias nuevamente.