We will be migrating from Ask to Discourse on the first week of August, read the details here

Haz tu Pregunta
0

Calc: Formato condicional y Tablas dinámicas

preguntado 2020-05-26 11:53:50 +0200

Imagen Gravatar de bowman

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

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

Comments

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/U...

Imagen Gravatar de Schiavinatto Schiavinatto ( 2020-05-31 19:58:46 +0200 )edit

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

Imagen Gravatar de bowman bowman ( 2020-06-01 10:27:12 +0200 )edit

Hola @bowman, en ask pt_br estamos agrupando enlaces a Basic, échale un vistazo.

https://ask.libreoffice.org/pt-br/que...

Puedo sugerir, una macro, conociendo un archivo de ejemplo, ya formateado.

Imagen Gravatar de Schiavinatto Schiavinatto ( 2020-06-01 15:58:42 +0200 )edit

Hola de nuevo, @Schiavinatto; te he enviado una hoja de ejemplo a tu correo electrónico con una prueba de concepto.

Un saludo

Imagen Gravatar de bowman bowman ( 2020-06-02 09:31:10 +0200 )edit

1 Responder

Ordenar por » viejos nuevas más votado
0

respondido 2020-06-02 23:27:41 +0200

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.

test file

'==============================================
'    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
edit marcar como ofensivo delete enlace mas

Comments

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.

Imagen Gravatar de bowman bowman ( 2020-06-03 08:33:01 +0200 )edit
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

1 seguidor

Estadisticas

Preguntado: 2020-05-26 11:53:50 +0200

Visto: 159 veces

Ultima actualización: Jun 02 '20